#include <stdio.h>
int nums[5]={1,2,3,4,5};
int for1(int n)
{
int i=0;
int s=0;
for(i=0;i<n;i++)
{
s+=i*2;
}
return s;
}
int for2(int n)
{
int i=0;
int s=0;
for(i=0;i<n;i++)
{
s+=i*i+nums[n-1];
}
return s;
}
int main(int argc,int ** argv[])
{
printf("for1:%d\n",for1(5));
printf("for2:%d\n",for2(5));
return 0;
}
IDA ARM:
EXPORT main
main
var_C= -0xC
var_8= -8
STMFD SP!, {R11,LR} @保存现场
ADD R11, SP, #4 @设置R11的值,作为栈帧指针使用
SUB SP, SP, #8 @开辟栈空间
STR R0, [R11,#var_8] @保存参数1
STR R1, [R11,#var_C] @保存参数2
MOV R0, #5 @R0=5
BL for1 @调用for1
MOV R2, R0
LDR R3, =(aFor1D-0x8414)
ADD R3, PC, R3 @for1:%d\n
MOV R0, R3 @format
MOV R1, R2
BL printf @调用printf
MOV R0, #5 @R0=5
BL for2 @调用for2
MOV R2, R0
LDR R3, =(aFor2D-0x8434)
ADD R3, PC, R3 @for:%d\n
MOV R0, R3 @format
MOV R1, R2
BL printf
MOV R3, #0
MOV R0, R3
SUB SP, R11, #4
LDMFD SP!, {R11,PC}
版权声明:本文为NightStarSoul原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。