Linux内核分析(堆栈)
来源:互联网 发布:ip地址绑定mac地址 编辑:程序博客网 时间:2024/06/05 05:05
网易云课堂的第一周笔记
刘森林
原创作品转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”
- 汇编语言的寻址模式
movl %eax,%edx edx=eax 寄存器寻址 registermode(相当于c地址指针赋值)
movl $0x123, %edx edx=0x123 立即寻址 immediate(相当于直接赋值地址值给c指针)
movl 0x123,%edx edx=(int)0x123 直接寻址 direct(相当于获取地址指针的内容,* 操作)
movl (%ebx),%edx edx=(int)ebx 间接寻址 indirect(相当于地址指针赋值后取值)
movl 4(%ebx),%edx edx=(int)(ebx +4) 变址寻址 displaced(相当于地址指针增加后,赋值后取值)
- 和堆栈操作相关的重要指令
- 在云课堂实验楼做反汇编实验
在CODE文件夹中创建main.c的C语言文件
将C语言文件转换为汇编语言
gcc –S –o main.s main.c -m32
删去链接用的多余的代码,剩下纯汇编代码
_g: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax //压入ebp地址,改变ebp,然后把8赋予eax addl $3, %eax //往eax加3 popl %ebp //把exp的值给ebp,相当于ebp值回地址B ret //ret后,eip指向leave指令的地址,esp加四_f: pushl %ebp movl %esp, %ebp //这里压入之前ebp地址 subl $4, %esp movl 8(%ebp), %eax //把8的值移动加入到eax寄存器里面 movl %eax, (%esp) //把eax的值传给exp所指的空间 call _g leave //运行f函数的leave指令,有两个过程先movl %ebp,%esp,然后popl %ebp ret _main: pushl %ebp //堆顶压入了ebp的值 movl %esp, %ebp //改变ebp的值使得其指向esp andl $-16, %esp //与 0xfffffff0 与运算,使得它对齐寻址空间,加快cpu处理速度 subl $16, %esp //esp向下移动4位 call ___main movl $8, (%esp) call _f //调用_f 函数,由于eip不可以直接修改,只能调用 call addl $1, %eax // leave ret //把esp上指的内容给会eip,函数返回
通过实验理解了冯诺依曼结构的存储程序计算机的工作方式,cpu从代码段取指令,然后执行。了解了堆栈的工作方式。
0 0
- Linux内核分析(堆栈)
- Linux内核堆栈实现分析 save_stack_trace
- Linux内核分析-1/反汇编(堆栈)
- 《Linux内核分析》-函数调用模型与堆栈分析
- Linux 内核堆栈
- Linux 内核堆栈
- linux内核堆栈
- Linux 内核堆栈
- 深入Linux内核网络堆栈
- 深入Linux内核网络堆栈
- 深入Linux内核网络堆栈
- 深入Linux内核网络堆栈
- 深入Linux内核网络堆栈
- 深入Linux内核网络堆栈
- Linux 内核堆栈打印函数
- linux内核堆栈设置过程
- 深入Linux内核网络堆栈
- 深入Linux内核网络堆栈
- linux下jdk配置,安装eclipse
- hdu 4352
- 何为 Java Bean
- Github(1)-错误解决
- 英语半年总结
- Linux内核分析(堆栈)
- java面试概念题01
- HDU 1035 Robot Motion
- Linux执行.sh文件,提示No such file or directory的问题
- java中volatile关键字的含义
- unbalanced calls to begin/end appearance transitions for uiviewcontroller的解决方法
- CSS3实现毛玻璃(图片模糊)效果
- 计算机网络(5层体系结构),数据传输过程
- GPS经纬度的表示方法及换算