之前学习了操作系统课程,对其中寄存器等汇编部分一直感到很陌生,今天点开了孟宁老师的Linux内核分析,看了第一周的计算机是如何工作的,受益匪浅。
首先将一段简单的C代码转换成汇编代码
vim a.c
Paste_Image.png执行以下命令,其中m32表示使用32位
gcc –S –o a.s a.c -m32
打开 a.s 删除其中点开头的行得到以下结果就是汇编代码
了解常见的寄存器、汇编指令
-
寄存器
esp 记录栈底位置
ebp 记录栈顶位置
eax 记录函数返回
eip 记录函数位置 -
汇编指令
movl 赋值
addl 加法运算
subl 减法运算
pushl 压栈
popl 弹栈
call 函数调用
ret 函数返回
leave 使esp、ebp回到上次的位置
分析汇编代码理解程序运行过程
Paste_Image.png总结
冯诺依曼提出的存储程序的计算机工作模型,是计算机最最基础性的逻辑结构,他的魅力在于能让计算机按部就班的做运算,最终返回运算结果,这也正是计算机的强项。
徐兆鹏原创作品 转载请注明出处《Linux内核分析》
MOOC课程http://mooc.study.163.com/course/USTC-1000029000
网友评论