一、数据传送指令
正常传送(一般都是相同范围之间的传送)
movb 传送字节
movw 传送字(一个字是两个字节,总共16位)
movl 传送双字(32位数据)
扩展传送(无论是符号扩展传送还是零扩展传送)都是从小范围到大范围的传送
movsbw 符号扩展传送字节到字
movsbl 符号扩展传送字节到双字
movswl 符号扩展传送单字到双字
movz 零扩展
IA32中栈是向低地址方向增长的,压栈会减少栈指针,寄存器sp存放栈的栈顶指针。压榨的过程是减小栈指针并将内容存入存储器中。
压栈的pushl指令编码只有一个字节 而如果你写成 subl $4,%esp movl %ebp,(%esp) 的话就总共需要6个字节的指令编码。
二、数据传送示例
8(%ebp) 意思是将bp寄存器的内容加8,%ebp +8
间接引用指针就是将该指针放在一个寄存器中,然后在存储器引用中使用这个寄存器。局部变量通常保存在寄存器中,给存储器值赋值给
寄存器基本上都是在给局部变量赋值。程序对寄存器的访问速度要远远快于对存储器的访问。
三、算术和逻辑操作