您的位置:首页 > 运维架构 > Linux

网易云课堂《Linux内和分析》汇编分析和寻址方式小结(一)

2015-03-08 11:17 525 查看
一、汇编分析

g:
pushl	%ebp
movl	%esp, %ebp
movl	8(%ebp), %eax
addl	$3, %eax
popl	%ebp
ret
f:
pushl	%ebp
movl	%esp, %ebp
subl	$4, %esp
movl	8(%ebp), %eax
movl	%eax, (%esp)
call	g
leave
ret
main:
pushl	%ebp
movl	%esp, %ebp
subl	$4, %esp
movl	$8, (%esp)
call	f
addl	$1, %eax
leave
ret


 分析结果:http://yunpan.cn/cJhSCXVbCxLdW   提取码: 956f

二、寻址方式小结

1、寄存器寻址

操作数在通用寄存器中。

例:movl %eax,%edx

2、立即寻址

指令的地址字段指出操作数本身,而不是操作数地址,不需要访问内存取数,因此指令执行时间很短。

例:movl $0x123,%eax

3、直接寻址

指令的地址字段直接指出操作数的内存地址,不需要其他转换。

例:movl 0x123,%eax

4、间接寻址

相对直接寻址而言,指令的地址字段不是操作数的真正地址,而是操作数地址的指示器。形式地址单元的内容才是操作数的有效地址。

例:movl (%ebx),%edx

原创作品转载请注明出处

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-10000290
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编