#####################################
作者:张卓
原创作品转载请注明出处:《Linux操作系统分析》MOOC课程 http://www.xuetangx.com/courses/course-v1:ustcX+USTC001+_/about
#####################################
作者:张卓
原创作品转载请注明出处:《Linux操作系统分析》MOOC课程 http://www.xuetangx.com/courses/course-v1:ustcX+USTC001+_/about
#####################################
1. 汇编一个简单的C程序
用C语言写一个小程序,简单即可,如下面的:
gcc -S -o main.s main.c -m32 (64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同)
得到一个main.s文件,里面以点开头的都是链接时的辅助信息;我们在看这些汇编代码时可以把他们都删除掉,留下来的就是纯汇编代码。
用C语言写一个小程序,简单即可,如下面的:
int g(int x)
{
return x + 4;
}
int f(int x)
{
return g(x);
}
int main(void)
{
return f(12) + 1;
} 然后用下面的命令编译成汇编代码:
gcc -S -o main.s main.c -m32 (64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同)
得到一个main.s文件,里面以点开头的都是链接时的辅助信息;我们在看这些汇编代码时可以把他们都删除掉,留下来的就是纯汇编代码。
1 g:
2 pushl %ebp
3 movl %esp, %ebp
4 movl 8(%ebp), %eax
5 addl $4, %eax
6 popl %ebp
7 ret
8 f:
9 pushl %ebp
10 movl %esp, %ebp
11 subl $4, %esp
12 movl 8(%ebp), %eax
13 movl %eax, (%esp)
14 call g
15 leave
16 r

本文通过分析一段x86汇编代码,深入探讨计算机内部如何执行指令,解析程序运行的过程,帮助读者理解计算机底层运作机制。
最低0.47元/天 解锁文章
822

被折叠的 条评论
为什么被折叠?



