これは宿題の質問ですが、行き詰まっています。
割り当ては、配列内の最大の整数を見つけることです。与えられた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 ) ;
}
これまでに約 10 のバージョンのアセンブリを作成しましたが、これが最も近いものです。
.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コードは変更されていません