gcc编译c代码时如何生成汇编中间代码?

时间:2021-11-10 02:05:49
gcc编译c代码时如何生成汇编中间代码,且汇编文件中中包含原来的C函数代码注释。

9 个解决方案

#1


gcc -S hello.c
生成hello.s
包含原来的C函数代码注释恐怕不容易吧

#2


生成方法同楼上

包含注释几乎是不可能,c的一个语句可能对应汇编的几个语句.

#3


不能生成注释

#4


包括注释是不可能的!!!学过编译原理就知道了。

#5


我的表达可能有问题,是生成类似如下包含源代码信息的文件:
; WatchDog();                             
move.b 9052151,d2
move.b d2,9052151
;
;        if( ++Counter >= 700 ) Counter=0;
addq.w #1,_Counter
cmpi.w #700,_Counter
bcs.w L1
clr.w _Counter
bra.w L1

#6


使用带调试参数的gcc生成代码,然后再使用调试工具查看就行了。

#7


参数怎么写?用哪个工具察看???
楼上帮人帮到底,说清楚点啊

#8


是 gcc -S hello.c 生成 hello.s
同一楼,不过生成的事AT&T的汇编~~~

#9


使用-g参数生成代码,如果需要可以使用-g3或者-ggdb3包含更多的调试信息。但是要注意多个文件时,编译和链接都需要加这个参数。并且不能和优化参数连用。
工具么,gdb吧。不过是命令行的。另外intel的vtune是图形界面的,其静态函数参看功能可以看到。

#1


gcc -S hello.c
生成hello.s
包含原来的C函数代码注释恐怕不容易吧

#2


生成方法同楼上

包含注释几乎是不可能,c的一个语句可能对应汇编的几个语句.

#3


不能生成注释

#4


包括注释是不可能的!!!学过编译原理就知道了。

#5


我的表达可能有问题,是生成类似如下包含源代码信息的文件:
; WatchDog();                             
move.b 9052151,d2
move.b d2,9052151
;
;        if( ++Counter >= 700 ) Counter=0;
addq.w #1,_Counter
cmpi.w #700,_Counter
bcs.w L1
clr.w _Counter
bra.w L1

#6


使用带调试参数的gcc生成代码,然后再使用调试工具查看就行了。

#7


参数怎么写?用哪个工具察看???
楼上帮人帮到底,说清楚点啊

#8


是 gcc -S hello.c 生成 hello.s
同一楼,不过生成的事AT&T的汇编~~~

#9


使用-g参数生成代码,如果需要可以使用-g3或者-ggdb3包含更多的调试信息。但是要注意多个文件时,编译和链接都需要加这个参数。并且不能和优化参数连用。
工具么,gdb吧。不过是命令行的。另外intel的vtune是图形界面的,其静态函数参看功能可以看到。