AVR组件中的mod(%)-__divmodhi4

时间:2019-03-16 12:19:10

标签: assembly avr

我正在尝试在AVR组装中执行%10。

我创建了一个简单的c文件

int main()
{
  int k=19;
  int j;
  j = k%10;
  return 0;
}

然后我将其编译为汇编,给出

    ldi r24,lo8(19)
    ldi r25,0
    std Y+2,r25
    std Y+1,r24
    ldd r24,Y+1
    ldd r25,Y+2
    ldi r18,lo8(10)
    ldi r19,0
    mov r22,r18
    mov r23,r19
    rcall __divmodhi4
    std Y+4,r25
    std Y+3,r24
    ldi r24,0
    ldi r25,0

__divmodhi4的工作方式以及结果存储在哪里?

1 个答案:

答案 0 :(得分:3)

由于AVR没有硬件分配器,因此AVR-GCC编译器必须使用复杂的功能来执行此类操作。

__ divmodhi4-这些功能之一。它将r25:r24中存储的带符号的16位整数除以r23:r22中的另一个带符号的16位整数。

在r23:r22中返回16位商,在r25:r24中返回余数

您应该在与看到自己的代码相同的反汇编中看到__divmodhi4。

您还可以看到GCC库for example, here的查找源