c语言汇编语言和机器语言的转化
时间:10-02
整理:3721RD
点击:
汇编语言经过汇编程序可以翻译成及期望语言,C语言是不是必须先转换为汇编语言,然后才能生成机器语言?还是C语言可以直接经过编译就可以生成机器语言?我所查找的资料都是说C语言经过编译后生成.obj的目标文件,也就是机器语言,望各位大师给小弟详解一下,小弟不剩感激。
我知道这句话,我只是有疑问的是,到底是c语言必须先转换为汇编语言,然后再转换为机器语言呢,还是c语言可以直接经过编译就生成机器语言,还是机器语言和汇编语言本身就是一样的,望指导
这个好像需要编译原理才能说清楚!
汇编语言某种程度上来说就是机器语言,只是机器语言直接写看不懂,增加助记符形成汇编语言,当然运行的时候需要变成0101组合的程序,而不是ascii码表示的文本。C语言在编译的时候目标文件就是机器语言,但是想看懂obj文件,得用工具转换成汇编语言。obj不是最终的程序,还需要链接形成完整的机器可执行代码。
从c的源代码生成可执行文件需要经过四个过程,预处理、编译,汇编,连接。预处理是由预处理器完成,主要做了一些,头文件插入、宏替换等工作,这时候生成的文件是.i的文件,然后就是编译,是将.i文件,里面也是c代码,转化成汇编语言,这个过程由编译器完成,生成.s文件,里面就成了汇编内容,再往下汇编就是将.s文件解释为.o文件,由汇编器完成,注意以上过程全部是单个文件处理的,最终由连接器根据连接脚本,将所有的.o文件连接成一个可执行文件。纯手打,好累。