目录
一 移动指令概述
移动指令
MOVI
设置寄存器为指令编码的常数。表 3-19 中列出的条件移动指令用于分支避免。
表 3-19. 移动指令
指令 | 格式 | 定义 |
---|---|---|
MOVI | RRI8 | 加载寄存器为 12 位带符号常数 |
MOVEQZ | RRR | 非零条件移动 |
MOVNEZ | RRR | 不等于零条件移动 |
MOVTZ | RRR | 小于零条件移动 |
MOVGEZ | RRR | 大于或等于零条件移动 |
解释
MOVI
指令设置寄存器为 12 位带符号常数。MOVEQZ
在非零条件下移动。MOVNEZ
在不等于零条件下移动。MOVTZ
在小于零条件下移动。MOVGEZ
在大于或等于零条件下移动。
示例
假设您希望在寄存器 a0
的值不为零时将 1
加载到寄存器 a1
,可以使用以下指令:
asm
深色版本
1moveqz a0, a1, 1
逐行解释
moveqz a0, a1, 1
:- 如果
a0
的值不为零,则将1
加载到a1
。
- 如果
注意事项
- 条件移动指令用于避免不必要的分支。
- 条件移动指令依赖于寄存器的值。
二 指令详解
1 MOVI
指令格式
MOVI
指令用于将 12 位带符号常数加载到寄存器。
asm
深色版本
1moVi rd, imm
示例
假设您希望将 -128
加载到寄存器 a0
,可以使用以下指令:
asm
深色版本
1moVi a0, -128
逐行解释
moVi a0, -128
:- 将
-128
加载到寄存器a0
。
- 将
注意事项
MOVI
指令支持 12 位带符号常数。- 常数范围为
-2^11
至2^11 - 1
。
2 MOVEQZ
指令格式
MOVEQZ
指令用于在非零条件下移动。
asm
深色版本
1moveqz rs, rt, imm
示例
假设您希望在寄存器 a0
的值不为零时将 1
加载到寄存器 a1
,可以使用以下指令:
asm
深色版本
1moveqz a0, a1, 1
逐行解释
moveqz a0, a1, 1
:- 如果
a0
的值不为零,则将1
加载到a1
。
- 如果
注意事项
MOVEQZ
指令仅在非零条件下执行。
3 MOVNEZ
指令格式
MOVNEZ
指令用于在不等于零条件下移动。
asm
深色版本
1movnez rs, rt, imm
示例
假设您希望在寄存器 a0
的值不等于零时将 2
加载到寄存器 a1
,可以使用以下指令:
asm
深色版本
1movnez a0, a1, 2
逐行解释
movnez a0, a1, 2
:- 如果
a0
的值不等于零,则将2
加载到a1
。
- 如果
注意事项
MOVNEZ
指令仅在不等于零条件下执行。
4 MOVTZ
指令格式
MOVTZ
指令用于在小于零条件下移动。
asm
深色版本
1movtz rs, rt, imm
示例
假设您希望在寄存器 a0
的值小于零时将 3
加载到寄存器 a1
,可以使用以下指令:
asm
深色版本
1movtz a0, a1, 3
逐行解释
movtz a0, a1, 3
:- 如果
a0
的值小于零,则将3
加载到a1
。
- 如果
注意事项
MOVTZ
指令仅在小于零条件下执行。
5 MOVGEZ
指令格式
MOVGEZ
指令用于在大于或等于零条件下移动。
asm
深色版本
1movgez rs, rt, imm
示例
假设您希望在寄存器 a0
的值大于或等于零时将 4
加载到寄存器 a1
,可以使用以下指令:
asm
深色版本
1movgez a0, a1, 4
逐行解释
movgez a0, a1, 4
:- 如果
a0
的值大于或等于零,则将4
加载到a1
。
- 如果
注意事项
MOVGEZ
指令仅在大于或等于零条件下执行。