Schreiben Sie eine ARM-Funktion (Subroutine), um die Anzahl der ungeraden Ganzzahlen in einem Integer-Array zu zählen. Die Funktion Signatur ist:Suchen nach ungeraden Zahlen in Assembly
int numodd(int array[], int size) ;
wobei: int array [] auf die ARM-Funktion als ein Zeiger auf das erste Element der Integer-Array übergeben wird, und int size wird als Wert übergeben, und die Anzahl der Elemente im Array.
Der Quellcode C-Sprache ist:
#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) ;
}
Assembly Code (bisher):
.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
Was ist Ihre Frage? Erfüllt dieser Code, was Sie erwarten? Siehe [fragen]. Wenn dies nicht der Fall ist, ist es normalerweise am besten, wenn Sie es in einem Debugger durchgehen. –