比较,分支, 跳转¶
比较指令¶
通常有左源以及右源两个输入的操作对象,一个输出
在Opcode后面加上:{.eq, .ne, .lt, .ge, .and, .or}来表明判断成立的条件- '.eq'表示相等则判断成立。
- '.ne'表示不相等则判断成立。
- '.lt'表示左源小于右源则条件成立。
- '.ge'表示左源大于等于右源则条件成立。
- '.and'表示左源和右源均非零时则条件成立。
- '.or'表示左源和右源中只要有一个非零则条件成立。
- 在'.eq, .ne, .lt, .ge'的基础上加上'u'表明做无符号比较。
- 在'.eq, .ne, .lt, .ge, .and, .or'的基础上加上‘i’表明右源操作对象为立即数`
详细汇编微指令可以参见手册比较指令。
汇编示意:
分支指令¶
通常有左源以及右源两个输入的操作对象,一个分支跳转目标
在Opcode后面加上:{.eq, .ne, .lt, .ge}来表明判断成立的条件
- '.eq'表示相等则判断成立
- '.ne'表示不相等则判断成立
- '.lt'表示左源小于右源则条件成立
- '.ge'表示左源大于等于右源则条件成立
- 在此基础上加上'u'表明做无符号比较。
详细的汇编微指令可以参见块内跳转指令。
汇编示意:
Operand2 是个立即数,可以写成标签(0), 立即数(1) 两种形式。
(0)
(1)
跳转指令¶
- 直接跳转时操作对象Operand0为立即数
- 间接跳转时操作对象Operand0为寄存器,Operand1为立即数。
详细的汇编微指令可以参见块内跳转指令。
汇编示例: