keil4如何将c语言转换成汇编语言_Keil 中关于C语言编译生成汇编代码函数名规则...

本文探讨了在Keil中,C语言函数如何转换为汇编语言,特别是函数名的生成规则。当函数不使用寄存器传递参数时,函数名保持原样,否则会加上下划线前缀。通过实例展示了#pragma noregparms的作用,并提到了代码格式化工具Astyle在Keil中的使用。
摘要由CSDN通过智能技术生成

在keil 中 C语言的函数有带参数和不带参数之分。

一般的资料里说fun(void)类型的函数不带参数,所以,keil编译器生成的汇编的调用地址(函数名) 为fun。这没有错。事实上,不管C语言的函数是否带参数,只要函数在调用过程中不用寄存器传递参数,生成的汇调用址(函数名)都是原来的函数名。 比如:

#pragma noregparms

void fun(unsigned int a,unsigned char b)

{

unsigned c;

c = a + b;

return c;

}

main()

{

unsigned x,y;

x = 0xaabb;

y = 0x b1b2;

x = fun(x,y)

}

此文件生成的汇编代码中,fun函数对应的汇编函数名还fun。 如果将#pragma noregparms  注释掉,则函数在调用时会用到寄存器传递参数,这时,对应的函数名会被keil生成为_fun。

《Linux内核分析》week1作业-分析一个简单c语言的汇编代码

1.C语言源码 #include int g(int x){ ; } int f(int x){ return g(x); } int main(){ )+; } 2. ...

在keil中使用Astyle格式化你的代码的方法

一个好的程序,不仅要有好的算法,同时也需要有良好的书写风格.写出好的算法不容易,但是好的代码风格却并不困难.提到格式化代码,Astyle是一个不能错过的工具,它可以方便的将程序代码格式化成自己想要的样 ...

keil中使用Astyle格式化你的代码的方法2篇合

关于Astyle Astyle 的全称是Artistic Style的简称,是一个开源的源代码格式化工具,可以对C,C++,C#以及Java等编程语言的源代码进行缩进.格式化.美化.Home Page ...

C语言打印当前所在函数名、文件名、行号

printf("[%s %s] %s: %s: %d\n", \ __DATE__, __TIME__, __FILE__, __func__, __LINE__); 内核驱动中: ...

keil中使用Astyle格式化你的代码的方法-keil4 keil5通用

简介:在给RTT 提交代码,需要符合RT-Thread 的代码规范,本文简单介绍如何使用Astyle 格式化为符合RTT要求的代码风格. 关于Astyle Astyle 的全称是Artistic St ...

KEIL中启动文件详解(汇编语言)

原文在此:http://www.cnblogs.com/mddblog/p/4920063.html 概述 在嵌入式系统中,启动文件是整个系统非常关键的部分,它会进行一些底层的初始化,构建程序运行必要 ...

C++中引用编译过的C代码为什么要用“extern c”

函数经过编译系统的翻译成汇编,函数名对应着汇编标号.  因为C编译函数名与得到的汇编代号基本一样,如:fun()=>_fun, main=>_main  但是C++中函数名与得到的汇编代号 ...

C++不同类中的特征标相同的同名函数

转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee        作者按:                   从这篇文章中,我们主要会认识到一下几点:      ...

c语言中函数调用的本质从汇编角度分析

今天下午写篇博客吧,分析分析c语言中函数调用的本质,首先我们知道c语言中函数的本质就是一段代码,但是给这段代码起了一个名字,这个名字就是他的的这段代码的开始地址 这也是函数名的本质,其实也就是汇编中的 ...

随机推荐

ubuntu14 eclipse luna 无法显示菜单 , 解决方案

使用命令行 , 输入 Exec=env UBUNTU_MENUPROXY=0 /eclipse 就可以了 或者建立一个Eclipse的快捷方式,eclipse. ...

QT学习 之 文本文件读写

上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读的文件.为了操作这种文件,我们需要使用QTextStream类.QTextStream和QDataS ...

Vue 浅谈前端js框架vue

Vue Vue近几年来特别的受关注,三年前的时候angularJS霸占前端JS框架市场很长时间,接着react框架横空出世,因为它有一个特性是虚拟DOM,从性能上碾轧angularJS,这个时候,vu ...

高效求a的n次幂的算法

代码: public class A的N次幂 { public static void main(String[] args) { int a = 2; int n = 60; long t = Sy ...

ubuntu下vim使用方法

按下's'可对文本进行编辑 按下'ESC'再输入':',之后输入wq是保存再退出,输入q是直接退出.如果是只读read only模式则需要输入'wq!'保存退出.

Raid介绍

https://wsgzao.github.io/post/raid/ http://www.cnblogs.com/Bob-FD/p/3409221.html

POJ 2585.Window Pains 拓扑排序

Window Pains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1888   Accepted: 944 Descr ...

mysql中enum类型

ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串("") 或 NULL: 如果 ...

windows下静态编译pthread

1. Building the library as a statically linkable library-------------------------------------------- ...

sklearn进行拟合

# codind:utf-8 from sklearn.linear_model import SGDRegressor,LinearRegression,Ridge from sklearn.pre ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值