嗨,这是针对Sparc汇编语言的,我有一个带有计数器的循环,用于跟踪它循环的循环次数。我如何检查该计数器,如果它是4的倍数打印“blah blah blah”等等。因此,在计数4,8,12,16,20 .....等应该打印那句“blah blah blah”。因为我是初学者,所以最有效的方式和最容易理解的是什么。谢谢。
答案 0 :(得分:0)
按照你自己的4个例子...你想要的,可以通过在每次循环迭代时将计数器除以4来实现。仅在该除法的其余部分为零时打印消息。
由于4是2的幂,因此基于计数器(其二进制表示)的最右边(即最不重要)位变为00
的事实,存在一种有效的替代方案。每四个步骤。只需按计数器和3(= 4 - 1)的按位'和';如果结果为零,则打印消息。
我没有Sparc经验,所以这里什么都没有:
and %L1,3,%g0 ; assuming register %L1 is the counter
bne PastMessage ; skip the call below if result of 'and' was not zero
call PrintMessage
PastMessage:
...