c编译汇编
把c语言程序编译链接成可执行文件,然后反汇编那个可执行文件,之后你看到的将是c语言程序的等价汇编语言程序.
⑵ C语言为什么要先编译成汇编语言
C语言,具有可移植性,或者说同样的代码可以在不同cpu平台上运行得到同样的结果
汇编语言,移植性差,一般针对某型cpu,每个类型的cpu都有自己的汇编语言
为保证C语言编制的通用算法的可移植性,比如我们用C编写了一套mp3解码算法程序,要在pc机上、手机上都能用,那么我们就采用通用的C编译器,将C语言程序编译成指定CPU的汇编语言,再汇编成机器可执行程序。
另一个用途是程序优化问题,在C语言层次,由于是高级语言,不涉及底层硬件,那么底层硬件的特性不能够得到充分利用,在需要优化算法的场合,我们需要将C语言算法编译生成汇编程序,然后修改需要优化的汇编程序达到目的。比如,你在手机上经常会遇到音频解码器,需要安装,而且不同的cpu需要选择不同的解码器,这些解码器应当就是在汇编层次上优化了算法的可执行代码,关键部分经过汇编级优化,不需要优化部分仍然使用C语言编译的结果。
⑶ 我想用gcc编译一个汇编程序,就是把c语言转成汇编。
假设你的函数保存在main.c中。
gcc
-S
main.c
-o
main.s
-S表示assembly
汇编的意思,也就是生成汇编文件
⑷ 怎样将C语言编译成汇编
编译完了,反汇编。
你自己学汇编语言,把实现改成汇编,算法可能要调整。
有一个在线编译器,可以直接编译成汇编:
很好用。
⑸ 汇编语言和C语言各个用什么软件来编译
C语言常用的编译软件有Microsoft
Visual
C++,Borland
C++,Watcom
C++
,
Borland
C++
Builder,Borland
C++
3.1
for
DOS,Watcom
C++
11.0
for
DOS,GNU
DJGPP
C++,
GUN
CC,Lccwin32
C
Compiler
3.1,Microsoft
C,High
C,等等......
大学里教学用的是TC2.0,这里的T表示TURBO,是Borland公司的产品.
汇编语言,一般是MASM
很多版本,是微软公司的,还有就是TASM,是borland公司的,还有NASM
⑹ C语言被编译后是汇编程序吗
当然不是,编译后是OBJ文件,连接后成立可执行代码,是二进制机器码了。
⑺ c语言编译器是用汇编语言写的吗
这个是肯定的。算法优化,首先是逻辑描述的精炼化。至于C,只是计算逻辑到计算机模式的一种映射,而汇编仅是利用特殊计算机指令的一个更深的藕荷。 不过有一点,C语言由于是计算逻辑到计算机模式的映射,所以不单单考虑算法本身,还肩负数据组织的实现。数据流动方式,数据组织方式,对计算性能的影响也很大。这要看是否和计算机组成原理相贴近。其实这块也是侧重逻辑的设计,而不是具体机器指令的实现,因此汇编是无能为力的。 不过在DSP等特殊CPU架构,C语言和编译器无法很好的将上述逻辑转换为机器指令,或者C本身的逻辑无法很好的贴近CPU的特性,那么还是得汇编。一个典型的例子就是如何使用DSP的并行指令(通常的矢量计算)和并发指令集,几个不同的指令(隶属不同处理单元)的同时执行。使用C语言无法描述清楚这些逻辑方式,而编译器又太水,则还是不得不用汇编。此时C语言仅能沦落到大的计算机组织特性的贴近,和整体框架,模块的设计上。细节方面无能为力了。
⑻ 可以显示C语言编译成汇编语言全过程的编译器
如果你有用IDE的话,比如Visual Studio、Delphi等,应该都是可以设置C和汇编同时查看的。
一句C对应一句汇编,也相当于“单步编译”吧!
⑼ C语言和汇编语言的关系
程序员编写的C语言代码,首先要经过C语言编译器,生成汇编代码,这个过程称为编译阶断,当C语言编译器生成汇编代码后,再调用汇编器来将汇编代码编译成汇编指令。
这是一种站在巨人肩人的作法,最早的C++编程语言也是这样的实现方法,只不过那时候叫Cfront程序,Cfront程序的作用是将C++代码转换成C语言代码,类似于一个文本处理器,然后再调用C语言编译器,将C源码编译成汇编代码,然后再调用汇编器将汇编代码编译成机器码。
这个过程,在Windows平台上不容易操作,但是在Linux平台上很容易看到。以gcc这款c语言编译器为例,它实际上是四个小程序。
cp: c语言预处理程序,有它负责进行预处理操作。
cc: C语言编译器,它负责将C源码编译成汇编代码。
as: 汇编器,它负责将汇编代码编译成机器码,一般使用gcc test.c这样的命令编译C语言时,会生成一个a.out的程序,它实际上指的就是as ouput,即汇编器输出文件。
link: 链接器,它负责将汇编器输入的机器码和库打包成一个操作系统可以运行的可执行文件,在Linux上的可执行文件格式是ELF格式,这个格式的实现是有链接器来完成的。
⑽ C++程序进行编译后会生成C语言代码还是汇编代码
不会是这两种语言代码,而是编译后直接生成二进制文件(.OBJ文件),再通过连接器链接成二进制文件(.EXE/.DLL/.OCX/.SYS等)