吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5297|回复: 5
收起左侧

[其他转载] 解决一个问题:如何编译源代码的汇编代码和机器码?

  [复制链接]
MuFen 发表于 2019-3-13 22:35
本帖最后由 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. 汇编指令之后为注释



下一篇文章传送门:汇编小白---解决一些常用汇编指令问题---简单通俗易懂


123.png
1234.jpg

编译汇编代码与机器码.txt

113 Bytes, 下载次数: 18, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 1吾爱币 +1 收起 理由
xuxinhui123 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

muzili520 发表于 2019-3-13 22:46
解决了我的大问题
陈世界 发表于 2019-3-14 00:11
MikuMaxZ 发表于 2019-3-14 07:43 来自手机
q1070697070 发表于 2019-3-15 13:20
谢谢你的分享1
StevenYwh 发表于 2020-11-18 19:40
原来如此
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表