这是一个家庭作业问题,但我被卡住了。
任务是找到数组中的最大整数。这是我们得到的 C 代码:
#include <stdio.h>
#include <stdlib.h>
extern int mybig( int array[] ) ;
void main( char * argv[], int argc )
{
int array[] = { 5, 15, 100, 25, 50, -1 } ;
int biggest ;
biggest = mybig( array ) ;
printf( "Biggest integer in array: %d\n", biggest ) ;
}
到目前为止,我已经制作了大约十几个版本的程序集,但这是我得到的最接近的版本
.global mybig
mybig: stmfd sp!, {v1-v6, lr}
mvn v1, #0
loop: ldrb a4, [a1], #4
MOVLT a4, a1
cmp a1, v1
bne loop
ldmfd sp!, {v1-v6, pc}
.end
每次我将它链接在一起时,我都会遇到一个无限循环,我不知道为什么。任何帮助将不胜感激,教授在入门课程中没有教我们任何东西,只是告诉我们去做,并给了我们一个工具链的链接来编译和组装。
编辑:这就是我到达的地方。程序没有运行,只是进入了一个无限循环。
.global mybig
mybig: stmfd sp!, {v1-v6, lr}
mvn v1, #0
mov a3, a1
loop: ldr a4, [a1], #4
cmp a4, a1
MOVMI a3, a1
cmp a1, v1
bne loop
mov a1, a4
ldmfd sp!, {v1-v6, pc}
.end
C代码没有改变