所以我正在尝试使用c驱动程序和arm程序集函数,该函数采用一系列int并检查所有都是正数并与驱动程序一起使用。
驱动器
#include <stdio.h>
#include <stdlib.h>
extern int absarray( int array[], int size ) ;
int main( int argc, char * argv[] )
{
int array[] = {1, 3, -5, -252, 280, -332 } ;
int asize = sizeof(array) / sizeof(int) ;
int result ;
int i ;
result = absarray( array, asize ) ;
for( i = 0 ; i < asize ; i++ )
printf( " %d ", array[i] ) ;
printf( "\n" ) ;
exit( 0 ) ;
}
和功能
AREA Program, CODE, READONLY
ENTRY
Main
EOR R3,R3,R3; Clear R3
ADD R3,R1,R3; load R3 with R1 ie address
EOR R0,R0,R0; clear R0
ADD R0,R1,R0; load R0 with the size
EOR R4,R4,R4; clear R4
Loop
LDR R5,[R3] ; load R5 with the value at address
ADD R4,R4,R5 ; add R4 with the value present at address,signed
ADD R3,R3,#4; increment address pointer by 4 as int is 4 bytes
SUB R0,R0,#1; decrease the count
CMP R0,#0; compare the count with 0 to check for end of array
BNE Loop ;loop back if count is not 0
MOV PC,R14 ; load Pc with the return address with the result stored in R4
END
当我尝试编译时
arm-non-eabi-gcc -o test -c -g test1.s
我得到了一堆关于整个代码的错误说明
当我将其更改为.asm
时 arm-non-eabi.gcc -o test -c -g test1.asm
我收到错误,说链接器输入文件未使用,因为链接未完成
如何让这两个相互协作并显示c驱动程序中给出的输出?