Assembly 循环期间以特定倍数打印部件

Assembly 循环期间以特定倍数打印部件,assembly,sparc,Assembly,Sparc,嗨,这是Sparc汇编语言的,我有一个带计数器的循环来跟踪它循环了多少个周期。我怎么能让它检查计数器,如果它是4的倍数来打印“废话废话”等等。因此,在计数4、8、12、16、20……等时,它应该打印“废话废话”。既然我是初学者,那么什么是最有效、最容易理解的方法呢。谢谢 按照你自己的例子4。。。可以通过在每次循环迭代中将计数器除以4来实现所需的功能。仅当除法的余数为零时才打印消息 由于4是2的幂,有一种有效的替代方法,基于计数器(其二进制表示形式)的最右边(即最低有效位)每四步变为00。只需取计

嗨,这是Sparc汇编语言的,我有一个带计数器的循环来跟踪它循环了多少个周期。我怎么能让它检查计数器,如果它是4的倍数来打印“废话废话”等等。因此,在计数4、8、12、16、20……等时,它应该打印“废话废话”。既然我是初学者,那么什么是最有效、最容易理解的方法呢。谢谢

按照你自己的例子4。。。可以通过在每次循环迭代中将计数器除以4来实现所需的功能。仅当除法的余数为零时才打印消息

由于4是2的幂,有一种有效的替代方法,基于计数器(其二进制表示形式)的最右边(即最低有效位)每四步变为
00
。只需取计数器和3(=4-1)的按位“and”;如果结果为零,则打印消息

我没有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:
    ...