标签:style blog http io color os ar 使用 sp
一个完整的指令集结构包括
Instuction Fetch |
Instuction Decode |
Operand Fetch |
Excute |
Result Store |
Next Instruction |
我们必须解决的问题包括:
stack | 0 address | ADD | tos<---tos+next | |
Accumulator | 1 address | ADD A | acc<---acc+mem[A] | |
1+x address | ADDX A | acc<---acc+mem[A+x] | ||
Register-memory | 2 address | ADD A B | EA[A]<---EA[A] | |
3 address | add A B C | EA[A]<---EA[B]+EA[C] | ||
Load-Store | 3 address | add A B C | A<---B+C | |
load A B | A<---mem[B] |
操作数类型和操作数表示
类型:是面向应用、面向软件系统处理的各种操作数据类型。整型、浮点型、字符、字符串、向量类型;类型由操作码确定。
表示:操作数在机器中的表示,硬件结构能够识别,指令系统可以直接使用的表示格式。整型(原码、补码、反码),浮点(IEE 754标准),十进制(BCD码,二进制十进制表示)
RISC计算机指令集结构的功能设计
现代编译技术与计算机体系结构设计
load指令 |
访存有效地址:Regs[rs]+immediate |
从存储器取来的数据放入寄存器rt中 |
store指令 | 访存有效地址:Regs[rs]+immediate | 从存储器取来的数据放入寄存器rt中 |
立即数指令 | Regs[rt]<---Regs[rs] op immediate | |
分支指令 | 目标转移地址:Regs[rs]+immediate | rt无用 |
寄存器跳转、寄存器跳转并连接 | 转移目标地址为Regs[rs] |
LD R2,20(R3) | 装入双字 | Regs[R2]<---64(Mem[20+Regs[R3]]) |
LW R2,40(R3) | 装入字 | Regs[R2]<---64(Mem[40+Regs[R3]]0)32 ## Mem[40+Regs[R3]] |
LB R2,30(R3) | 装入字节 | Regs[R2]<---64(Mem[30+Regs[R3]]0)56 ## Mem[40+Regs[R3]] |
LBU R2,40(R3) | 装入无符号字节 | Regs[R2]<---64056 ## Mem[40+Regs[R3]] |
LH R2,30(R3) | 装入半字 | Regs[R2]<---64(Mem[30+Regs[R3]]0)48 ## Mem[30+Regs[R3]]##Mem[31+Regs[R3]] |
L.S F2,60(R4) | 装入半字 | Regs[F2]<---64Mem[60+Regs[R4]] ## 032 |
L.D F2,40(R3) | 装入双精度浮点数 | Regs[F2]<---64Mem[40+Regs[R3]] |
SD R4,300(R5) | 保存双字 | Mem[300+Regs[R5]]<---64Regs[R4] |
SW R4,300(R5) | 保存字 | Mem[300+Regs[R5]]<---32Regs[R4] |
S.S F2,40(R2) | 保存单精度浮点数 | Mem[40+Regs[R2]]<---32Regs[F2]0..31 |
SH R5,502(R4) | 保存半字 | Mem[502+Regs[R4]]<---16Regs[R5]48..63 |
DADDU R1,R2,R3 | 无符号加 | |
DADDIU R4,R5,R6 | 加无符号立即数 | |
LUI R1,#4 | 把一个立即数装入到一个字的高16位 | Regs[R1]<---032 ## 4 ## 016 |
DSLL R1,R2,#5 | 逻辑左移 | Regs[R1]<---Regs[R2]<<5 |
DSLT R1,R2,R3 | 置小于 |
if(Regs[R2]<Regs[R3]) then Regs[R1]<---1 else Regs[R1]<---0 |
J name | 跳转 | PC36..63<--- name<<2 |
JAL name | 跳转并连接 | Regs[R31]<-- PC+4;PC36..63<---name<<2;((PC+4)-227)<=neme<((PC+4)+227) |
JALR R3 | 寄存器跳转并连接 | Regs[R31]<--- PC+4;PC<--Regs[R3] |
JR R5 | 寄存器跳转 | PC<-- Regs[R5] |
BEQZ R4,name | 等于零时分支 | if(Regs[R4]==0) then PC<-- name;((PC+4)-217)<=name<((PC+4)+217) |
BNE R3,R4,name | 不相等时分支 | ((PC+4)-217)<= name < ((PC+4)+217) |
MOVZ R1,R2,R3 | 等于零时移动 | if(Regs[R3]==0) then Regs[R1]<--Regs[R2] |
标签:style blog http io color os ar 使用 sp
原文地址:http://www.cnblogs.com/li-daphne/p/4067241.html