c语言 转汇编,c语言转汇编语言

kodinid 9 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言汇编问题,于是小编就整理了3个相关介绍c语言 转汇编的解答,让我们一起看看吧。

  1. 怎样将汇编语言转换为C语言?
  2. 汇编和c语言如何结合的?
  3. 汇编语言如何发展到C语言的?

怎样将汇编语言转换为C语言?

目前的反编译软件,只存在将机器指令码反汇编成汇编代码,不存在将汇编代码反编译成C语言的,因为汇编代码是低级语言,最接近于机器码(具体可查看不同硬件平台的技术资料),每条汇编指令都对应一个固定的机器码,这样进行反汇编是可行的,而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语言转汇编语言-第1张图片-安济编程网
图片来源网络,侵删)

汇编语言如何发展到C语言的?

二、反汇编技巧(摘取自 天书夜读)

     2.1  首先,将流程代码与数据计算的代码分开,我们使用

            F: 用于标识 调用函数或者作为函数被调用,出栈、入栈

c语言 转汇编,c语言转汇编语言-第2张图片-安济编程网
(图片来源网络,侵删)

            C:用于标识 流程控制代码、判断、比较、循环

            D: 用于标识 数据处理

     2.2  翻译代码

c语言 转汇编,c语言转汇编语言-第3张图片-安济编程网
(图片来源网络,侵删)

           一般被读入的为输入,被写的内部变量为输出;

           取出D的代码进行逐句翻译,任何一段不加任何跳转、连续的mov 和 加减乘除都可以还原成为一个表达式

           标识为F的代码基本不用翻译,本身为简单的函数调用。

           C的代码将其翻译成为if 、for、do、switch

到此,以上就是小编对于c语言 转汇编的问题就介绍到这了,希望介绍关于c语言 转汇编的3点解答对大家有用。

标签: 汇编 语言 代码