C main的反汇编简单介绍
2015-07-17 12:50
387 查看
在linux下写了个简单的C程序,如下:
用arm-linux-gcc -g test.c -o test 得到test可执行文件,然后进行反汇编:arm-linux-objdump -D -S test >dump ,进入dump中查看反汇编。
进入dump后,跳转到main函数的执行指令处,如下所示:
179处,执行push {fp} 指令,此处指令有两个作用:一是将当前fp的内容存储在[sp-4]的地址中;二是使 sp = sp-4 ,即改变了sp的值。
180:等于:fp = sp ,改变fp的值,使fp指向了新的栈底
181:等于:sp = sp -12 ,使sp指向栈底后的第三个单元区域。
未完待续。
1 #include<stdio.h> 2 int main() 3 { 4 int a; 5 a++; 6 return a; 7 }
用arm-linux-gcc -g test.c -o test 得到test可执行文件,然后进行反汇编:arm-linux-objdump -D -S test >dump ,进入dump中查看反汇编。
进入dump后,跳转到main函数的执行指令处,如下所示:
175 0000834c <main>: 176 #include<stdio.h> 177 int main() 178 { 179 834c: e52db004 push {fp} ; (str fp, [sp, #-4]!) 180 8350: e28db000 add fp, sp, #0 ; 0x0 181 8354: e24dd00c sub sp, sp, #12 ; 0xc 182 int a; 183 a++; 184 8358: e51b3008 ldr r3, [fp, #-8] 185 835c: e2833001 add r3, r3, #1 ; 0x1 186 8360: e50b3008 str r3, [fp, #-8] 187 return a; 188 8364: e51b3008 ldr r3, [fp, #-8] 189 } 190 8368: e1a00003 mov r0, r3 191 836c: e28bd000 add sp, fp, #0 ; 0x0 192 8370: e8bd0800 pop {fp} 193 8374: e12fff1e bx lr
179处,执行push {fp} 指令,此处指令有两个作用:一是将当前fp的内容存储在[sp-4]的地址中;二是使 sp = sp-4 ,即改变了sp的值。
180:等于:fp = sp ,改变fp的值,使fp指向了新的栈底
181:等于:sp = sp -12 ,使sp指向栈底后的第三个单元区域。
未完待续。
相关文章推荐
- Baidu Map开发示例
- Autoconf中AC_CHECK_LIB依赖第三方库时FAIL
- Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE无法安装错误解决方案
- How-to: enable fair scheduler in hadoop
- Jmeter性能测试NoHttpResponseException (the target server failed to respond)
- 启动Genymotion时报错Failed to initialize backend EGL display
- Pick a Self-Contained Set of Tablespaces(自包含)
- fail to register notify:Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字符串"
- Gem总结
- Baidu地图之removeEventListener失效问题
- gtk程序运行报 main_loop!=NULL 错误的解决办法
- gtk程序运行报 main_loop!=NULL 错误的解决办法
- gtk程序运行报 main_loop!=NULL 错误的解决办法
- 奔跑吧,飞邮!TurboMail全面进军移动邮件系统
- Partition(hdu4651)2013 Multi-University Training Contest 5
- hdu 4308 Saving Princess claire(BFS)
- Partition(hdu4651)2013 Multi-University Training Contest 5----(整数拆分一)
- Unable to open log device ‘/dev/log/main’: No such file or directory
- 万全R630服务器组装RAID5阵列
- 由现实世界到抽象世界