无法理解为c代码生成的arm汇编代码

时间:2015-03-05 14:53:18

标签: assembly arm

#include <stdio.h>
const unsigned int a= 5;
int main()
{
  int c = 10;
  c= c % a;
    return 0;
}

汇编代码生成如下。为c = c%a生成的代码不清楚。 umull如何工作以及为什么使用LSL和RSL。在rsb指令中r3的值是什么以及如何。请逐步解释umull指令到rsb指令的代码。

000c 0A30A0E3       mov r3, #10
0010 08300BE5       str r3, [fp, #-8]

0014 08101BE5       ldr r1, [fp, #-8]  // r1 is 10
0018 2C309FE5       ldr r3, .L3   //r3 is 5 
001c 912383E0       umull   r2, r3, r1, r3
0020 2321A0E1       mov r2, r3, lsr #2
0024 0230A0E1       mov r3, r2
0028 0331A0E1       mov r3, r3, asl #2
002c 023083E0       add r3, r3, r2
0030 012063E0       rsb r2, r3, r1
0034 08200BE5       str r2, [fp, #-8]

0038 0030A0E3       mov r3, #0

0 个答案:

没有答案
相关问题