解决一个问题:如何编译源代码的汇编代码和机器码?
本帖最后由 MuFen 于 2019-3-15 13:32 编辑1. 如何编译源代码?
1)下载编译器并安装 以嵌入式AVR处理器为例,需先下载AVR处理器对应的编译器WinAVR
下载地址: ---附件一---
2)创建源代码
创建一个源代码,例如main.c
3)进入DOS系统,调用WinAVR工具编译源代码,输入下述指令:
avr-gcc.exe -Wall -O –g -o main main.c
1. avr-gcc.exe为安装的WinAVR编译器编译工具
2. -Wall 表示启用编译警告提醒
3. -O 表示启用编译优化功能
4. -g 表示启用调试功能
5. -o main表示命名编译后产生的目标文件名为main
6. main.c 指定被编译的源文件
2. 提取源代码的汇编程序与机器码
1)汇编程序与机器码提取工具GNU Binutils工具
参考网址:
https://sourceware.org/binutils/docs-2.29/binutils/index.html
具备的功能:
1. 从编译产生的目标文件中提取出源代码对应的汇编代码:objdump
2. 从编译产生的目标文件中提取出源代码对应的机器码:objdump
3. 对目标文件的格式进行转换:objcopy
4. 显示目标文件的格式信息:readelf
5. 等等
2)采用Binutils工具集中objdump获取源代码的汇编程序与机器码
在安装的编译器WinAVR中,已经附带了binutils工具,输入下述指令:
avr-objdump.exe –S main > main_S.txt
获取源代码的汇编程序与机器码。
其中:
1. avr-objdump.exe表示Binutils工具集中目标文件分析工具
2. -S main表示提取出目标文件main的汇编程序与机器码
3. > main_S.txt表示将提取出的信息存储到文件main_S.txt中
3. 查看汇编程序与机器码
查看通过objdump导出的main_S.txt文件,其中含有main.c源代码对应的汇编程序与机器码。
其中:
1. 最左侧5e~6a为指令地址
2. 地址之后为指令机器码
3. 机器码之后为对应的汇编程序
4. 汇编指令之后为注释
下一篇文章传送门:汇编小白---解决一些常用汇编指令问题---简单通俗易懂
解决了我的大问题 多些交流,一同进步 学到了。感谢 谢谢你的分享1 原来如此
页:
[1]