3.4访问信息:
·对于生成小于8字节结果的指令,有2条规则:生成1字节和2字节数字的指令会保持剩下的字节不变;生成4字节数字的指令会把高位4个字节置为0
操作数指示符:
·操作数的三种类型:
①立即数:用$后跟一个标准C表示法的整数,如$-577或$Ox1F
②寄存器:ra表示任意寄存器a,R[ra]表示寄存器的值
③内存引用:Mb[Addr]表示对存储在内存中的地址Addr开始的b个字节值的引用
·寻址模式:
①$Imm,指去Imm这个地址里的值
②ra,指取ra这个寄存器的值
(ra),指以这个寄存器的值作为地址取值
③Imm(rb,ri,s)指以(Imm+rb的值+ri的值乘以s)作为地址取值
注意:Imm若不为十六进制,则需要转化为十六进制
且s为1、2、4、8
数据传送指令:
·MOV S,D(注意,S,D不能都指向内存位置)
movq:传送字节,8位
movw:传送字,16位
movl:传送双字,32位(注意,movl以寄存器为目的时,会把该寄存器高4字节设置为0,任何为寄存器生成32位值的指令都会把寄存器的高位置成0)
movq:传送四字,64位
movabsq:传送绝对的四字
movz类:零扩展;movs类:符号扩展
压入和弹出栈数据:
·栈底在上,栈顶在下,%rsp指向的地址总是栈顶
push:%rsp先减8,再存
pop:%rsp直接加8,原来的内存位置的值仍在那里,直到被覆盖