objdump生成可读的汇编代码
来源:互联网 发布:spss数据统计与分析pdf 编辑:程序博客网 时间:2024/05/19 20:43
大家都知道用GCC的选项S来生成汇编代码,可是这样的汇编代码过于复杂,GCC生成了很多的额外信息,信息量大了,可读性却降低了,举个简单的例子:
下面是一段非常简单的C程序 test.c
int main()
{
int a = 1;
return a;
}
用GCC的S选项编译出来的汇编是这样的,几行的Code产生了非常多的信息,不偏于阅读和对照。(也可以加上选项 -fverbose-asm, 显示更多comment信息)
#gcc -S -fverbose-asm test.c
.file "temp.c"
.text
.globl main
.type main, @function
main:
.LFB2:
pushq %rbp
.LCFI0:
movq %rsp, %rbp
.LCFI1:
movl $1, %eax
leave
ret
.LFE2:
.size main, .-main
.section .eh_frame,"a",@progbits
.Lframe1:
.long .LECIE1-.LSCIE1
.LSCIE1:
.long 0x0
.byte 0x1
.string "zR"
.uleb128 0x1
.sleb128 -8
.byte 0x10
.uleb128 0x1
.byte 0x3
.byte 0xc
.uleb128 0x7
.uleb128 0x8
.byte 0x90
.uleb128 0x1
.align 8
.LECIE1:
.LSFDE1:
.long .LEFDE1-.LASFDE1
.LASFDE1:
.long .LASFDE1-.Lframe1
.long .LFB2
.long .LFE2-.LFB2
.uleb128 0x0
.byte 0x4
.long .LCFI0-.LFB2
.byte 0xe
.uleb128 0x10
.byte 0x86
.uleb128 0x2
.byte 0x4
.long .LCFI1-.LCFI0
.byte 0xd
.uleb128 0x6
.align 8
.LEFDE1:
.ident "GCC: (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973]"
.section .comment.SUSE.OPTs,"MS",@progbits,1
.string "ospwg"
.section .note.GNU-stack,"",@progbits
用objdump命令则可以生成阅读性高很多的汇编代码, 除了信息精简了很多,而且还有和原始Code的对照,是不是这样看就清楚多了。
#gcc -g -c test.c
#objdump -d -M intel -S test.o
temp.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <main>:
//#include <iostream>
//using namespace std;
int main()
{
0: 55 push rbp
1: 48 89 e5 mov rbp,rsp
int a;
return 1;
4: b8 01 00 00 00 mov eax,0x1
}
9: c9 leave
a: c3 ret
## 博客仅作个人记录##
- objdump生成可读的汇编代码
- GCC生成的汇编代码
- GCC生成的汇编代码
- GCC生成的汇编代码
- GCC生成的汇编代码
- GCC生成的汇编代码
- Linux下objdump查看C程序编译后的汇编代码
- objdump 反汇编一个函数的脚本
- Linux下的objdump反汇编工具
- 反汇编工具objdump的使用简介
- 反汇编工具objdump的使用简介
- dexdump oatdump objdump 反汇编及生成oat文件
- 编写可读代码的艺术
- 编写可读代码的艺术
- 编写可读代码的艺术
- 编写可读代码的艺术
- 编写可读代码的艺术
- 编写可读代码的艺术
- ConcurrentLinkedQueue使用陷阱(一)
- PL/SQL Developer AutoReplace (设置常用SQL快捷键)
- HttpCLient实现对被GZip压缩过的Response进行解压
- Excel保存到数据库时数据精度的处理
- Android出现“Read-only file system”解决办法
- objdump生成可读的汇编代码
- 南宁市究竟有多少家跨境购物体验中心?
- SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”问题解决
- #午安,努力#11.29
- 结构体(struct) 的 sizeof 大小
- Edit Distance
- 在ListView中动态添加EditText并对其中的数据进行保存和由于复用引起的Editext中的内容显示异常的解决方案
- React Native环境搭建
- Pushwoosh集成-原生系统推送