PowerPC汇编指令集
⼀、存储/加载指令
1 整数存储指令
整数存储指令如表2所⽰。
表2 整数存储指令
名称助记符语法格式字节存储(偏移地址寻址)stb rS, d(rA)字节存储(寄存器寻址)stbx rS, rA, rB 记录有效地址的字节存储(偏移地址寻址)stbu rS, d(rA)记录有效地址的字节存储(寄存器寻址)stbux rS, rA, rB 半字存储(偏移地址寻址)sth rS, d(rA)半字存储(寄存器寻址)sthx rS, rA, rB 记录有效地址的半字存储(偏移地址寻址)sthu rS, d(rA)记录有效地址的半字存储(寄存器寻址)sthux rS, rA, rB 字存储(偏移地址寻址)stw rS, d(rA)字存储(寄存器寻址)stwx rS, rA, rB 记录有效地址的字存储(偏移地址寻址)stwu rS, d(rA)记录有效地址的字存储(寄存器寻址)stwux rS, rA, rB
st(ore) ** 的指令都是将寄存器中值存储到存储器(内存等)
(1) 字节存储指令stb(偏移地址寻址)
stb rS,d(rA)
有效地址(EffectAddr)为rA的内容加d,rS的低8位内容存储到有效地址为EA的存储器中。
(2) 字节存储指令stbx(寄存器寻址)hostile
stbx rS,rA,rB
有效地址为rA的内容加上rB的内容,rS的低8位内容存储到有效地址为EA的存储器中。
(3) 记录有效地址的字节存储指令stbu(偏移地址寻址)
stub rS,d(rA)
appleed有效地址EA=(rA)+d,rS的低8位内容存储到有效地址为EA的存储器中。rA=EA,如果rA=0,则指令⽆效。
(4) 记录有效地址的字节存储指令stbux(寄存器寻址)
stbux rS,rA,rB
有效地址EA=(rA)+(rB),rS的低8位内容存储到有效地址为EA的存储器中,rA=EA,如果rA=0,则指令⽆效。
wink是什么意思
(5) 半字存储指令sth(偏移地址寻址)
sth rS,d(rA)
爱情英文签名有效地址EA=(rA)+d,rS的低16位内容存储到有效地址为EA的存储器中。
(6) 记录有效地址的半字存储指令sthu(偏移地址寻址)
sthu rS,d(rA)
有效地址EA=(rA)+d,rS的低16位内容存储到有效地址为EA的存储器中。rA=EA,如果rA=0,则指令⽆效。
(7) 字存储指令stw(偏移地址寻址)
stw rS,d(rA)
有效地址EA=(rA)+d,rS的32位内容存储到有效地址为EA的存储器中。
(8) 记录有效地址的字存储指令stwu(偏移地址寻址)
stwu rS,d(rA)
有效地址EA=(rA)+d,rS的32位内容存储到有效地址为EA的存储器中,rA=EA,如果rA=0,则指令⽆效。
(9) 记录有效地址的字存储指令stwux(寄存器寻址)
stwux rS,rA,rB
有效地址EA=(rA)+(rB),rS的32位内容存储到有效地址为EA的存储器中。rA=EA,如果rA=0,则指令⽆效。
(10)字存储指令stwx(寄存器寻址)
stwx rS,rA,rB
有效地址EA=(rA)+(rB),rS的32位内容存储到有效地址为EA的存储器中。
⼆、整数加载指令
整数加载指令如表3所⽰。
名称助记符语法格式⾼位清零加载字节指令(偏移地址寻址)lbz rD, d(rA)
⾼位清零的加载字节指令(寄存器寻址)lbzx rD, rA, rB
⾼位清零的加载字节并记录有效地址指令(偏移地址寻址)lbzu rD, d(rA)
⾼位清零的加载字节并记录有效地址指令(寄存器寻址)lbzux rD, rA, rB
⾼位清零的加载半字指令(偏移地址寻址)lhz rD, d(rA)
⾼位清零的加载半字指令(寄存器寻址)lhzx rD, rA, rB
⾼位清零的加载半字并记录有效地址指令(偏移地址寻址)lhzu rD, d(rA)
⾼位清零的加载半字并记录有效地址指令(寄存器寻址)lhzux rD, rA, rB
加载半字指令(偏移地址寻址)lha rD, d(rA)
加载半字指令(寄存器寻址)lhax rD, rA, rB
加载半字并记录有效地址指令(偏移地址寻址)lhau rD, d(rA)
加载半字并记录有效地址指令(寄存器寻址)lhaux rD, rA, rB
creep什么意思加载字指令(偏移地址寻址)lwz rD, d(rA)
加载字指令(寄存器寻址)lwzx rD, rA, rB
加载字并记录有效地址指令(偏移地址寻址)lwzu rD, d(rA)
加载字并记录有效地址指令(寄存器寻址)lwzux rD, rA, rB
l(oad)** 指令从存储器(内存等)取数据加载到寄存器
(1) lbz rD, d(rA) ;EA=(rA|0)+d。从存储器读取EA地址的内容,并加载低8位到rD,rD的其他位清0。不影响其他寄存器。
(2) lbzu rD, d(rA) ;EA=(rA)+d。从存储器读取EA地址⼀个字节的内容,并加载低8位到rD,rD的其他各位清零,有效地址EA 存放在rA中。
(3) lbzux rD,rA,rB ;EA=(rA)+(rB)。从存储器读取EA地址⼀个字节的内容,并加载低
8位到rD,rD的其他各位清零,EA 存放在rA中。如果rA=0或者rA=rD,则指令⽆效。
(4) lbzx rD,rA,rB ;EA=(rA|0)+(rB)。从存储器读取EA地址⼀个字节的内容,并加载低8位到rD,rD的其他各位清0。(5) lha rD, d(rA) ;EA=(rA|0)+d。从存储器EA处读取两个字节的数,并加载到rD的低16位。rD的其他位填充最⾼位的值。
(6) lhax rD,rA,rB ;EA=(rA)+(rB)。从存储器EA处读取两个字节的数,并加载到rD的低16位。rD的其他位填充最⾼位的值。
(7) lhau rD, d(rA) ;EA=(rA)+d。从存储器EA处读取两个字节的数,并加载到rD的低16位。rD的其他位填充最⾼位的值。EA 存放在rA中,如果rA=0或者rA=rD,则指令格式⽆效。
(8) lhaux rD,rA,rB ;EA=(rA)+(rB)。从存储器EA处读取两个字节的数,并加载到rD的低16位。rD的其他位填充最⾼位的值。EA存放在rA中,如果rA=0或者rA=rD,则指令格式⽆效。
(9) lhz rD, d(rA) ;EA=(rA|0)+d。从存储器EA处读取两个字节的数,并加载到rD的低16位。rD的其他位清零。
(10)lhzu rD, d(rA) ;EA=(rA|0)+d。从存储器EA处读取两个字节的数,并加载到rD的低16位。rD其他位清零。EA存⼊rA,如果rA=0或者rA=rD,则指令格式⽆效。
(11)lhzux rD,rA,rB ;EA=(rA)+(rB)。从存储器EA处读取两个字节的数,加载到rD的低16位,rD其他位清零。EA存⼊rA,如果rA=0或者rA=rD,则指令格式⽆效。
(12)lhzx rD,rA,rB ;EA=(rA|0)+(rB),从EA处读取两个字节的数,并加载到rD的低16位,将rD的其他位清零。
(13)lwz rD,d(rA) ;EA=(rA|0)+d,从EA处读取4个字节的数,并加载到rD。
(14)lwzu rD,d(rA) ;EA=(rA)+d,从EA处读取4个字节的数,并加载到rD。rA=EA,如果rA=0或rA=rD,则指令格式⽆效。
(15)lwzux rD,rA,rB ;EA=(rA)+(rB),从EA处读取4个字节的数,并加载到rD。rA=EA,如果rA=0或rA=rD,则指令格式⽆效。
perspective是什么意思(16)lwzx rD,rA,rB ;EA=(rA|0)+(rB),从EA处读取4个字节的数,并加载到rD。
三、整数多字存储/加载指令
表3 整数多字存储/加载指令
名称助记符语法格式
数学sub多字加载lmw rD,d(rA)
多字存储stmw rS,d(rA)
(1) lmw rD,d(rA) ;EA=rA+d。以EA起始的n个连续的字加载到通⽤寄存器GPRs rD到r31处,n=32-rD。EA必须为4的倍数,如果rA=0,则指令格式⽆效。指令执⾏时间长。
(2) stmw rS,d(rA) ;EA=rA+d。把通⽤寄存器从GPRs rS到GPRs r31,存储到以EA起始的n个连续的字存储器,EA必须是4的倍数。指令执⾏时间长。
转移指令
表4 分⽀控制指令
学生会主席竞选演讲稿名称助记符语法格式
⽆条件转移b( ba bl bla)target_addr
条件转移bc( bca bcl bcla)BO,BI,target_addr 条件转移(转移⽬标地址由LR指出)bclr(bclrl)BO,BI
条件转移(转移⽬标地址由CTR指出)bcctr(bcctrl)BO,BI
(1) ⽆条件转移指令bx(b ba bl bla)呼啸山庄英文读后感
指令的编码格式:
指令的语法格式:
b target_addr(AA=0 LK=0)
ba target_addr(AA=1 LK=0)
bl target_addr(AA=0 LK=1)
bla target_addr(AA=1 LK=1)
如果AA=0,则转移⽬标地址为LI||0b00的值经符号位扩展后加上指令地址。
如果AA=1,则转移⽬标地址为LI||0b00的值经符号扩展后的值。
如果LK=1,则转移指令下⼀条指令的有效地址存放到连接寄存器。
(1) 条件转移指令bcx
指令编码格式:
指令语法格式:
bc BO, BI, target_addr(AA=0 LK=0)
bca BO, BI, target_addr(AA=1 LK=0)
bcl BO, BI, target_addr(AA=0 LK=1)
bcla BO, BI, target_addr(AA=1 LK=1)
BI字段表⽰条件寄存器CR中的位⽤于转移条件。BO字段操作码定义见表5。
表5 BO字段操作码定义
BO说明
0000y计数器CTR减量,如果条件不成⽴则转移
0001y计数器CTR减量,如果条件不成⽴则转移develops
001zy如果条件不成⽴,则转移
0100y计数器CTR减量,如果条件成⽴则转移
0101y计数器CTR减量,如果条件成⽴则转移
011zy如果条件成⽴则转移
1z00y计数器CTR减量,如果CTR!=0,则发⽣转移