CTR跳转指令
LEEF跳转指令为与PC值改变有关的指令
CTR指令分为三类:
1) 条件跳转指令 F4格式
PC偏移量寻址,偏移量最低两位0扩展
如果条件跳转码被满足,则PC
<- PC + {offset19 , 0 0 }产生跳转
2)CALL调用
F3格式
跳转地址最低两位0扩展,执行延迟槽
返回地址自动保存到特殊寄存器RPC(Return PC)
RPC
<- PC, PC
<- {Address30, 0 0 }
3) 特殊跳转指令 F9、F10、F11格式
JMP,RET,SWI,RETI,HALT等
表4. CTR跳转指令表
助记符
|
名称
|
格式
|
说明
|
BGT
BLE
BGE
BLT
BHI
BLS
|
S.>
S.≤
S.≥
S.<
U.>
U.≤
|
F4
F4
F4
F4
F4
F4
|
~((N^V)|Z)
(N^V)|Z
~(N^V)|Z
(N^V)&~Z
~(C|Z)
(C|Z)
|
BPL
BMI
BNE
BEQ
BVC
BVS
BCC
BCS
|
正数时跳转
负数时跳转
不等时跳转
相等时跳转
无溢出时跳转
有溢出时跳转
无进位时跳转
有进位时跳转
|
F4
F4
F4
F4
F4
F4
F4
F4
|
~N
N
~Z
Z
~V
V
~C
C
|
BT
BF
|
为“真”时跳转
为“假”时跳转
|
F4
F4
|
TRUE
FALSE
|
XXX.A
|
延迟槽空
|
F4
|
对于上面的指令,延迟指令都执行,
但带.A参数时延迟指令不执行
|
CALL
JMP
RET
SWI
RETI
|
调用
跳转
返回
软件中断
中断返回
|
F3
F9
F9
F10
F11
|
RPC
<- PC, PC
<- {Address30, 0 0 }
延迟指令执行
PC
<- rB
延迟指令执行
PC
<- rB
延迟指令执行
PC
<- VBR|{1,Imm4,000}
保存处理器状态
恢复处理器状态
|
HALT
|
终止
|
F11
|
终止指令执行
|
特殊寄存器指令和综合指令
SRIS 和 LRFS是特殊寄存器访问指令,完成特殊寄存器和通用寄存器之间的数据交换,对特殊寄存器的访问权限根据内核/用户模式信号确定
在KERNEL_MODULE下,13个特殊寄存器均可读写
在USER_MODULE下,特殊寄存器PC、RPC、LPC可以进行读写,状态寄存器SR只能进行读操作,只有最后几位SR[3:0]可以进行写操作,剩下的特殊寄存器都不能进行读写操作!对禁止读写的寄存器操作将产生一个PRIVILEGE_VIOLATION.
综合指令是指用指令集中已经定义了的指令的某种组合,重新构成一个特殊的、且使用率比较高的指令。
表5. 特殊指令说明
助记符
|
名称
|
格式
|
说明
|
LRFS
SRIS
|
从特殊寄存器加载
保存寄存器数据到特殊寄存器
|
F8
F9
|
rC <- sA rC为通用寄存器,
sA为特殊寄存器
sC
<- rB sC为特殊寄存器,
rB为通用寄存器
|
CLC
|
Clean Cache
|
F11
|
清除CACHE
|
综合指令
| |||
CLR
NEG
NOP
NOT
JMP
RET
|
清除
求负数
无操作
按位求反
跳转
返回
|
|
XOR RD ,R0, R0
SUB Rd , R0 ,Rb
XOR R0, R0 , R0
XOR Rd, Ra, -1
SRIS PC , Rb
SRIS PC , Rb
|