当前位置:首页 » 编程软件 » c到汇编的编译代码的理解

c到汇编的编译代码的理解

发布时间: 2022-11-27 05:12:11

‘壹’ 从c语言源程序到汇编语言程序,C语言编译器完成何种处理

一个编译可实为解释的过程,把一条条C语言解释成相应的汇编语言组。

‘贰’ 汇编语言和c语言区别

汇编语言与C语言的区别:

1、在汇编语言中,为一个处理器编写的程序不能在另一种类型的处理器上运行。在C语言程序中,程序独立于处理器类型运行。

2、汇编语言代码的性能和准确性优于C代码。

3、C语言必须提供额外的指令来在计算机上运行代码。

4、汇编语言代码比C代码难以理解和调试。

5、 一个或两个C语言语句扩展为许多汇编语言代码。

6、汇编语言可以比C别更好地进行通信某些类型的硬件操作只能通过汇编语言执行。

7、在汇编语言中,我们可以直接读取物理地址上的指针,这在C别是不可能的。

8、在汇编语言中使用位更容易。

9、汇编程序用于在汇编语言中转换代码,而编译器用于在C编译代码。

10、C语言的可执行代码大于汇编语言代码,因此执行时间较长。

11、由于长的可执行代码,C程序的效率低于汇编语言程序。

12、与汇编程序员相比,C语言程序员不需要知道处理器中的寄存器等硬件细节。

13、最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网络贴吧,分享交流更多计算机编程知识。

‘肆’ 什么是汇编程序,编译程序,解释程序

解释程序就是一行行的执行,比如dos,你打个命令再按下回车,
编译就是一段代码一起执行,生成一个字节码文件,比如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语言编译器完成何种处理

编译器就是把高级语言转换成机器语言,就是二进制代码。
汇编语言可以说是机器语言的助记符,转换比较容易,基本上就是二进制直接替换。
高级语言就复杂了,转换起来很是麻烦,并且需要优化,所以编译器是个大的软件工程。

‘柒’ 实践,C语言是怎么变成汇编的

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

‘捌’ C语言 四个过程:预处理,编译,汇编,链接,分别进行了什么过程别度娘。

预处理:替换代码中的预处理命令(宏定义就是在这里直接替换的)
编译:对代码按执行顺序进行编译成.o或.obj目标文件
汇编:将其他高级语言转换成机器语言
链接:代码中的各种调用关系重定位

‘玖’ 汇编语言与C语言有什么区别

1、操作复杂程度的不同

c语言,与汇编语言相比,c语言在更加接近人的一般思维,因此在程序的设计过程中比较容易操作,此外在进行一些复杂的操作,运算时,c语言比汇编就要简单很多,尤其是c语言中的丰富的函数库,可以直接实现一些原本很复杂的功能,并且从代码量来说任意一个c语言程序,通过反汇编之后变成汇编语言程序,其长度都可能要增加好几倍。

2、使用范围的不同

c语言程序的事件将会只是编写汇编语言程序的几分之一,从编写程序的效率上来说c语言无疑更高,此外C语言是高级程序语言因此可移植性较好,不太受到到硬件设备的限制。

在实现一个功能时,汇编语言可以直接奔着目标去,而C语言则是给你提供了一种对于对于这种问题的普遍处理办法,不具有针对性,因此会有许多多余的在这个问题中不需要的过程,因此可能回事程序较大,运行较慢。相对与汇编语言,C语言更加适合一些较大型项目的开发。

3、运行的速度和效率不同

程序没有了汇编语言计算机直接就无法运行,因为汇编语言是基于计算机底层硬件的编程,通过它实现了对cpu,内存,硬盘以及外界设备的直接操作,因为直接所以汇编语言在程序的大小,执行的速度与效率方面几乎无可比拟,但是也是因为直接,所以汇编程序难以移植,且完成相同的操作代码量太大,在进行一些大的项目是,单独使用汇编进行编程几乎不可能实现。

‘拾’ C语言为什么要先编译成汇编语言

C语言,具有可移植性,或者说同样的代码可以在不同cpu平台上运行得到同样的结果
汇编语言,移植性差,一般针对某型cpu,每个类型的cpu都有自己的汇编语言
为保证C语言编制的通用算法的可移植性,比如我们用C编写了一套mp3解码算法程序,要在pc机上、手机上都能用,那么我们就采用通用的C编译器,将C语言程序编译成指定CPU的汇编语言,再汇编成机器可执行程序。
另一个用途是程序优化问题,在C语言层次,由于是高级语言,不涉及底层硬件,那么底层硬件的特性不能够得到充分利用,在需要优化算法的场合,我们需要将C语言算法编译生成汇编程序,然后修改需要优化的汇编程序达到目的。比如,你在手机上经常会遇到音频解码器,需要安装,而且不同的cpu需要选择不同的解码器,这些解码器应当就是在汇编层次上优化了算法的可执行代码,关键部分经过汇编级优化,不需要优化部分仍然使用C语言编译的结果。

热点内容
编译软件包 发布:2024-05-09 05:13:46 浏览:90
sql语句logon 发布:2024-05-09 05:04:28 浏览:556
阿里云服务器异地登录 发布:2024-05-09 05:04:27 浏览:933
信息发布源码 发布:2024-05-09 05:00:11 浏览:694
安卓手机aac是什么 发布:2024-05-09 04:56:21 浏览:394
数据库的中文乱码 发布:2024-05-09 04:41:00 浏览:751
永劫无间服务器为什么那么烂 发布:2024-05-09 04:34:38 浏览:811
用哪个软件配置华为企业路由器 发布:2024-05-09 04:23:58 浏览:521
简易脚本 发布:2024-05-09 04:17:30 浏览:802
返校vlog脚本 发布:2024-05-09 04:15:53 浏览:619