存储/加载指令
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 | (1) 字节存储指令stb(偏移地址寻址)
stb rS,d(rA)
有效地址为rA的内容加d,rS的低8位内容存储到有效地址为EA的存储器中。
(2) 字节存储指令stbx(寄存器寻址)
stbx rS,rA,rB
有效地址为rA的内容加上rB的内容,rS的低8位内容存储到有效地址为EA的存储器中。
(3) 记录有效地址的字节存储指令stbu(偏移地址寻址)
stub rS,d(rA)
有效地址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,则指令无效。
(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的存储器中。
2、整数加载指令
整数加载指令如表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 | 加载字指令(偏移地址寻址) | lwz | rD, d(rA) | 加载字指令(寄存器寻址) | lwzx | rD, rA, rB | 加载字并记录有效地址指令(偏移地址寻址) | lwzu | rD, d(rA) | 加载字并记录有效地址指令(寄存器寻址) | lwzux | rD, rA, rB
|
(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,则指令格式无效。
(16)lwzx rD,rA,rB ;EA=(rA|0)+(rB),从EA处读取4个字节的数,并加载到rD。
整数多字存储/加载指令
表3 整数多字存储/加载指令 名称 | 助记符 | 语法格式 | 多字加载 | 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的倍数。指令执行时间长。 |