我正在尝试在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
的工作方式以及结果存储在哪里?
答案 0 :(得分:3)
由于AVR没有硬件分配器,因此AVR-GCC编译器必须使用复杂的功能来执行此类操作。
__ divmodhi4-这些功能之一。它将r25:r24中存储的带符号的16位整数除以r23:r22中的另一个带符号的16位整数。
在r23:r22中返回16位商,在r25:r24中返回余数
您应该在与看到自己的代码相同的反汇编中看到__divmodhi4。
您还可以看到GCC库for example, here的查找源