我根本没有编写汇编的经验,所以我猜这个问题很容易回答。
有这个简单的循环:
mov r0,#3
loop:
do some instructions
...
last-instruction
subs r0,r0,#1
bne loop
afterloop:
如果我理解得很好,这个循环应该从 3 减少到 0 并停止(如果我错了,请纠正我)。
但是,在最后一次迭代中,当 r0 == 0 时,我想跳过last-instruction
并跳出循环。我认为cmp
如果 r0 等于 0 然后跳转到afterloop
. 但我想可能有一些更简单的方法来实现这一点。
编辑: 还有一个问题——如果要跳过更多指令怎么办?
在 C 中,它看起来像这样:
int i = 3;
while (1) {
foo();
if (i == 0) break;
skipped_func();
--i;
}