(1) TBNZ x0, #uimm6, label
Test and branch Not zero.
如果x0[uimm6] != 0 , then jump to label位置处执行.
(2) TBZ x0, #uimm6, label
Test and branch Zero.
如果x0[uimm6] == 0 , then jump to label位置处执行.
(3) CBZ x0, label
Compare and Branch Zero
如果x0 == 0 , then jump to label位置处执行
(4) CBNZ x0, label
Compare and branch Not zero.
如果x0 != 0 , then jump to label位置处执行
2. LDUR / LDURB / LDURSB / LDURH / LDURSH / LDURSW / STUR / STURB / STURH
它们都属于Load-Store Single Register(unscaled offset)
unscaled offset : 指的是"Base addr + 一个立即数"
(1) ldur x0,[base,#simm9]
x0 = [base+simm9]指向的内容
(2) ldurb w0,[base,#simm9]
从 [base+simm9]指向的内容中:取出一个byte,赋给w0.
w0中的其它字节:用0扩展得到.
(3) ldursb w0,[base,#simm9]
从 [base+simm9]指向的内容中:取出一个byte,赋给w0.
w0中的其它字节:用此byte的符号位扩展得到.
(4) ldurh
类似ldurb,不过:这次取halfword(2 bytes)
(5) ldursh
类似ldursb,不过:这次取halfword(2 bytes)
(6) ldursw
类似ldursb,不过:这次取word(4 bytes)
(7) stur x0,[base,#simm9]
把x0保存到[base+#simm9]指向的内存位置
(8) sturb x0,[base,#simm9]
把x0中的一个byte,保存到[base+#simm9]指向的内存位置
(9) sturh x0,[base,#simm9]
把x0中的一个half-word(2 bytes),保存到[base+#simm9]指向的内存位置
上一篇:ARMv8指令学习(2)
下一篇:ARMv7的非对齐地址访问
推荐阅读最新更新时间:2024-03-16 15:01