整数配列の奇数の数を数えるARM関数(サブルーチン)を記述します。関数シグネチャは次のとおりアセンブリ内の奇数の検索
int numodd(int array[], int size) ;
: int配列[]は整数配列の最初の要素へのポインタとしてARM関数に渡されると、 INTサイズが値によって渡され、数あります配列内の要素
C言語のソースコードは次のとおりです。
#include <stdlib.h>
#include <stdio.h>
extern int numodd(int array[], int size) ;
int main(int argc, char * argv[])
{
int numarray[] = { 2, 3, 1025, 3024, 4057, -3, -1025, -3578 } ;
int size = sizeof(numarray)/sizeof(int) ;
int result ;
result = numodd(numarray, size) ;
printf("Number of odd numbers: %d\n", result) ;
exit(0) ;
}
アセンブリコード(今のところ):
.global numodd
.text
numodd: stmfd sp!,{v1-v6,lr}
mov a3, #0
elop: ldr a4, [a1], #4
tst a4, #1
beq odd
subs a2, a2, #1
bne elop
odd: add a3, a3, #1
bne elop
mov a1, a3
ldmfd sp!,{v1-v6,pc}
.end
ご質問はありますか?このコードはあなたが期待することをしますか? See [ask]。そうでない場合は、デバッガでシングルステップ実行するのが最も良い方法です。 –