当前位置:首页 » 编程语言 » c语言编译成汇编

c语言编译成汇编

发布时间: 2024-12-07 05:37:33

c语言是先翻译为汇编语言吗

通常所说的C语言编译过程是这样的:
先是预编译处理(带#符号的语句都在这个阶段完成处理,包括文件包含、宏定义展开、条件预编译、语法检错等等)->
再是编译阶段。就是将C语言按照合适的语句翻译成汇编语言。->
再就是汇编编译。 就是将上一步的汇编语言翻译成机器码,每个.c文件都得到相应的.obj(目标文件)->
接下来就是连接阶段啦。就是将整个工程的.obj文件以及库函数连接成最终的一个.bin(或者是.hex之类的)可执行文件。
放到合适的环境中,就可以执行这个文件啦。

② 如何将c语言程序转成汇编语言程序。

如果是VC则在编译器命令行参数再加 /FA 则会生成汇编代码。如果参数是 /FAs 则会同时将源码和汇编代码。
/FA 程序集代码;.asm
/FAc 机器码和程序集代码;.cod
/FAs 源代码和程序集代码;.asm
/FAcs 机器码、源代码和程序集码;.cod

/Fa的用法

/Fa 为编译中的每个源代码文件创建一个源文件.asm。
/Fa文件名 将文件名.asm 放到当前目录中。仅在编译单个源代码文件时有效。
/Fa文件名.扩展名 将文件名.扩展名放到当前目录中。仅在编译单个源代码文件时有效。
/Fa目录\ 为编译中的每个源代码文件创建一个源文件.asm,并将其放到指定目录中。请注意必须有后缀反斜杠。只允许使用当前磁盘上的路径。
/Fa目录\文件名 将文件名.asm 放到指定目录中。仅在编译单个源代码文件时有效。
/Fa目录\文件名.扩展名 将文件名.扩展名放到指定目录中。仅在编译单个源代码文件时有效。

如果你是用gcc 或 g++编译器,如dev c++则加入命令行参数 -S 即可

③ 如何将c语言变成汇编

理论上来说C语言改成汇编是完全可以的,当然实际上还是有一定难度。

1、完全手工根据C语言的流程和目的,改编成汇编语言,这样做工作量很大

2、利用仿真软件,在仿真环境下,是有相应的汇编代码的,这样做工作量相对较小,但可读性较差。

④ C语言写的程序 怎么反汇编成汇编语言

在keilc中,单片机的C语言程序可以再DEBUG模式中得到对应的汇编程序。步骤如下:

1、建立工程,导入C文件代码,编译生成hex文件。

3、点击View--Disassembly Window调出汇编窗口,如上图。

通过以上步骤就可以看到与C对应的汇编程序了。

⑤ 先生们,女神们,快来看啊…… 请问下,c语言通过编译器转换成汇编语言,那电脑是怎样听懂汇编语言呢说

1、比如弹出光驱,学过高中物理应该知道电生磁,实际上就是个发动机,将电能转换成机械能。
2、要弄懂这个问题,举个 ia32 windows平台上的例子,我也只能大体上说一下,具体的细节在这里是说不完的。。以c++源码
int main()
{
int a = 2;为例
}
经过编译器,会生成汇编代码:mov dword ptr ss:[esp-4], 2,汇编指令经过汇编器(即将汇编指令转换成机器码的程序)即C74424FC02000000这样的机器码,汇编指令生成的机器码是有一定的指令格式的,你可以参考intel开发手册,第一部分就有intel指令的格式。然后链接器根据生成的二进制文件,按照pe结构,生成一个exe文件。当你双击运行这个文件的时候,windows的pe loader 程序会将exe文件内存文件映射到虚拟内存中(即windows上的页文件,也就是c盘中的pagefile文件),CPU的内部有一个震荡器(震荡器的原理很简单,平时看到的电铃就是这个原理),震荡器不断的发送脉冲,每一次当脉冲为1时,CPU就会从内存中读取指令,脉冲为1的时候,会根据内存中的地址总线,发送要取指的内存地址,这时候有一个译码器,所谓的译码器就是一种开关电路,比如有三个开关,当2个断开1个闭合时,就表示成001,也就是取第一个单元的数据,这样CPU将指令取得后,它会对指令进行译码,译码完后设置电路开关,然后将相应的数据放入到运算器中,运算器的实现,最早就是一个加法器。然后就是指令执行,执行完了,继续取下一条指令。这就是存储程序原理。

没事欢迎来0x30网络贴吧,分享交流更多计算机编程知识。

⑥ 实践,C语言是怎么变成汇编的

c语言未必会经历汇编语言这一环节,准确的说,c语言经历编译器(必须),链接器(某种程度上非必须)的处理,成为可执行代码(一般是二进制代码)。
而汇编也许是目前多数编译器提供的中间环节(vc,vs都提供在调试运行下使用反汇编的功能),因为对于汇编语言来说,进一步编译成机器语言的难度很低,只需查找有限的汇编指令对应的编码,如MOV,ADD等,具体编码与机器有关。
而你说的c语言变成汇编这一过程,正是编译器的核心工作,也是最为困难的。需要对你的程序(本质上是一个超长的字符串)做分割,词法分析,语法分析,最后翻译成汇编。

热点内容
pythondouble 发布:2024-12-29 04:40:45 浏览:92
直射光照算法 发布:2024-12-29 04:40:05 浏览:385
app云服务器长啥样 发布:2024-12-29 04:36:24 浏览:1000
算法涂抹 发布:2024-12-29 04:29:17 浏览:840
java中重载和重写的区别 发布:2024-12-29 04:29:15 浏览:701
android保存bitmap 发布:2024-12-29 04:13:11 浏览:886
微博清理缓存 发布:2024-12-29 04:05:34 浏览:785
class在线反编译工具 发布:2024-12-29 03:49:44 浏览:711
炉石怎么切换服务器 发布:2024-12-29 03:17:47 浏览:73
安卓怎么才有苹果的主题 发布:2024-12-29 03:10:33 浏览:191