c语言汇编程序100例,C语言程序转汇编代码

最近在学着写bootloader,由于汇编太繁杂,希望可以使用C语言完成一部分,然后转成NASM汇编代码,经过摸索,最终找到了一个解决方案,记录于此,留作参考。

核心步骤

使用gcc编译得到.o文件

这一步需要加上一些参数对编译行为进行控制。具体自行参考gcc文档。

我最终使用的命令参数为

gcc -fno-pic -fno-asynchronous-unwind-tables -m32 -O2 -s -c -o $@ $<

具体含义我也没有深入了解,`-m32`是生成32位代码,`-O2`是一种优化级别,`-fno-pic`似乎是必要,要不然每个文件最终都会生成一个额外的函数,具体原因我没有深入研究。

使用objconv程序将.o文件转换成汇编代码

objconv -fnasm $<

objconv可以将.o文件转成多种形式的汇编,具体自行查阅,上面的参数是要转成NASM代码。

还有一个问题是,这样直接转换成的汇编代码包含多个段,以及各种对齐指令,以及`enbdrXX`指令,需要自己根据需要进行删减。

到这里已经基本可以解决问题了,下面是我的需求和解决方案如下。

我的需求及实现

最终我需要的是将使用C语言完成的函数转换成汇编形式的函数,并去掉编译器相关、对齐相关的一些代码。我的Makefile如下。

all : $(subst .c,.func,$(wildcard *.c))

%.func : %.asm

./extractFunc.py $<


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部