从fibonacci数列对比C语言和其对应的汇编代码
来源:互联网 发布:mac os x10.11安装 编辑:程序博客网 时间:2024/06/05 03:27
C源码
[master][~/GitProjects/test/fibonacci]$ cat fib.c [2:59:06]#include <stdio.h>int main(void){ int x,y,z; while(1){ x = 0; y = 1; do { printf("%d\n", x); z = x + y; x = y; y = z; }while(x < 255); }}
汇编代码
[master][~/GitProjects/test/fibonacci]$ cat fib.disass [2:59:10]fib:(__TEXT,__text) section_main:0000000100000f30 pushq %rbp0000000100000f31 movq %rsp, %rbp0000000100000f34 subq $0x20, %rsp0000000100000f38 movl $0x0, -0x4(%rbp)0000000100000f3f movl $0x0, -0x8(%rbp)0000000100000f46 movl $0x1, -0xc(%rbp)0000000100000f4d leaq 0x56(%rip), %rdi0000000100000f54 movl -0x8(%rbp), %esi0000000100000f57 movb $0x0, %al0000000100000f59 callq 0x100000f880000000100000f5e movl -0x8(%rbp), %esi0000000100000f61 addl -0xc(%rbp), %esi0000000100000f64 movl %esi, -0x10(%rbp)0000000100000f67 movl -0xc(%rbp), %esi0000000100000f6a movl %esi, -0x8(%rbp)0000000100000f6d movl -0x10(%rbp), %esi0000000100000f70 movl %esi, -0xc(%rbp)0000000100000f73 movl %eax, -0x14(%rbp)0000000100000f76 cmpl $0xff, -0x8(%rbp)0000000100000f7d jl 0x100000f4d0000000100000f83 jmp 0x100000f3f
可能这是AT&T的风格,不太好看,使用gdb来intel的风格。
[master][~/GitProjects/test/fibonacci]$ gdb ./fib [3:00:10]GNU gdb (GDB) 7.12(gdb) set disassembly-flavor intel(gdb) disassembleNo frame selected.(gdb) disassemble mainDump of assembler code for function main: 0x0000000100000f30 <+0>: push rbp 0x0000000100000f31 <+1>: mov rbp,rsp 0x0000000100000f34 <+4>: sub rsp,0x20 0x0000000100000f38 <+8>: mov DWORD PTR [rbp-0x4],0x0 0x0000000100000f3f <+15>: mov DWORD PTR [rbp-0x8],0x0 0x0000000100000f46 <+22>: mov DWORD PTR [rbp-0xc],0x1 0x0000000100000f4d <+29>: lea rdi,[rip+0x56] # 0x100000faa 0x0000000100000f54 <+36>: mov esi,DWORD PTR [rbp-0x8] 0x0000000100000f57 <+39>: mov al,0x0 0x0000000100000f59 <+41>: call 0x100000f88 0x0000000100000f5e <+46>: mov esi,DWORD PTR [rbp-0x8] 0x0000000100000f61 <+49>: add esi,DWORD PTR [rbp-0xc] 0x0000000100000f64 <+52>: mov DWORD PTR [rbp-0x10],esi 0x0000000100000f67 <+55>: mov esi,DWORD PTR [rbp-0xc] 0x0000000100000f6a <+58>: mov DWORD PTR [rbp-0x8],esi 0x0000000100000f6d <+61>: mov esi,DWORD PTR [rbp-0x10] 0x0000000100000f70 <+64>: mov DWORD PTR [rbp-0xc],esi 0x0000000100000f73 <+67>: mov DWORD PTR [rbp-0x14],eax 0x0000000100000f76 <+70>: cmp DWORD PTR [rbp-0x8],0xff 0x0000000100000f7d <+77>: jl 0x100000f4d <main+29> 0x0000000100000f83 <+83>: jmp 0x100000f3f <main+15>End of assembler dump.
阅读全文
0 0
- 从fibonacci数列对比C语言和其对应的汇编代码
- C语言:求Fibonacci数列的前n项和
- c语言Fibonacci数列
- ARM下的C语言函数和对应的汇编代码
- c语言控制语句对应的汇编语句代码
- c语言控制语句对应的汇编语句代码
- 计算fibonacci数列 - 递归和迭代的效率对比
- 汇编代码对应的高级语言分析
- 汇编代码对应的高级语言分析
- 【C语言】fibonacci数列 的递归和非递归 +浅谈递归优劣
- 如何将C语言代码转换为对应的汇编代码?
- Fibonacci数列的c语言模块化测试程序
- 著名的菲波拉契(Fibonacci)数列,其第一项为0,第二项为1,从第三项开始,其每一项都是前两项的和。编程求出该数列前N项数据。
- (2)C代码之Fibonacci数列
- Fibonacci数列的幂和
- 一段C语言和汇编的对应分析,揭示函数调用的本质
- c语言柔性数组实现并用其求Fibonacci数列前n项,不足之处请见谅并回复评价
- 从蓝桥杯来谈Fibonacci数列
- the import cannot be resolved问题
- exploit-exercise的protostar之stack0
- Java POI 读写Excel 文件简单实现
- 合并两个有序链表/链表反转(逆置)/找链表倒数第k点(遍历一次)
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)
- 从fibonacci数列对比C语言和其对应的汇编代码
- java中基于循环嵌套的使用例题经典
- 75. could not initialize proxy
- HW--Church numerals
- 用了一年时间才大致把导师的 java 代码 看懂
- PyCharm中出现No tests were found的一种解决方法及PyCharm建立测试类的官方原文及翻译
- 线性表(List)---链式存储(循环链表)
- ASP.NET MVC中使用JS实现不对称加密密码传输
- JavaWeb学习总结(三十一)——国际化(i18n)