2016-12-04 59 views
-5

我是新来的c语言,希望建立将c语言映射到汇编语言的直觉,以便我可以对堆栈,注册表,内存,代码如何工作看到c代码。我已经阅读了几本汇编语言书籍,主要关注汇编语法,而不是c和汇编之间的关系。有谁知道我在哪里可以找到关于c和汇编语言之间的映射的书。将c语言映射为汇编语言

+1

没有“* map *”,不同的编译器以不同的方式做,即使是相同的编译器在不同的设置下也会有不同的做法 – harold

+0

C不需要堆栈,也不需要注册。 – Olaf

回答

0

我不知道这样一本书是否存在(如果有的话,它可能是一本关于编译器的书)。但是,有一个更简单的解决方案:尝试一下。

编写C代码,然后用调试符号编译(这些说明假设Linux的):

gcc foo.c -o foo 

然后,使用调试器:

gdb ./foo 
break MyFunction 
run 
disass 

这将设置一个断点MyFunction,然后运行该程序直至达到该断点。 disass将打印该功能的程序集。您可以使用stepi一次执行一条指令,或者使用next一次执行一条C指令。

+1

或者,运行'gcc -S foo.c'让编译器直接生成汇编文件(这可能会在汇编文件中留下更多关于映射的信息)。 – microtherion