Assembly Instruction

2023-05-02

写在前面

本章用来记录一下不常见的,各种架构下的汇编指令。

1. x86_64

浮点运算

跳转指令合集

2. arm32

neg

其实是求补码的指令,即取反后加1

1111(-1) 求补码为 0001(1)

IT{x{y{z}}} {cond}

IT (If-Then) 指令由四条后续条件指令(IT 块)句组成。 这些条件可以完全相同,也可以互为逻辑反。
IT 块中的指令(包括跳转)还必须在语法的 {cond} 部分中指定条件。
无需在代码中编写 IT 指令,因为汇编器会根据在后续指令中指定的条件为您自动生成这些指令。 不过,如果确实   需要编写 IT 指令,则汇编器会根据后续指令中指定的条件对 IT 中指定的条件进行验证。
编写 IT 指令可确保您会考虑如何在代码设计中放置条件指令以及选择条件。
在汇编为 ARM 代码时,汇编器会执行相同的检查,但是不会生成任何 IT 指令。


限制
不允许在 IT 块中使用下面的指令:
IT
CBZ 和 CBNZ
TBB 和 TBH
CPS、CPSID 和 CPSIE
SETEND
使用 IT 块时的其他限制有:
跳转指令或修改 pc 的任何指令只能是 IT 块中的最后一个指令。
无法跳转到 IT 块中的任何指令,除非在从异常处理程序返回时。
不能在 IT 块中使用任何汇编器指令

本质上是一个条件判断指令,判断接下来的1~4个指令是否可以执行

IT{x{y{z}}} {cond} x表示第二条指令的条件开关,y代表第三条指令的条件开关,z表示第四条指令条件开关 x,y,z可以是 T(then)或E(else) 中的一种 T 表示在满足cond时执行,E表示在不满足cond时执行

可以看看这篇文章