ARM测试demo

demo1: 子程序,调用C函数


01    AREA MfArm,CODE,READONLY
02    ENTRY
03    EXPORT main
04    IMPORT strcmp
05 
06big
07    DCB "hello world",0
08small
09    DCB "hello world",0
10 
11main
12    MOV R0,#1
13    MOV R1,#2
14     
15    BL ADD_SUM
16    MOV R3,R0
17 
18    ADR R0,big
19    ADR R1,small
20    BL strcmp
21    mov R0,#0
22 
23    B stop
24 
25 
26ADD_SUM
27    ADD R0,R0,R1
28    BX LR
29     
30stop
31    END





demo2:  C语言调用 ARM汇编

C代码:

01#include<stdio.h>
02#include<string.h>
03 
04extern void* _memcpy(void* dest,void* src, size_t size);
05int main(void)
06{
07    char dest[100]={0};
08    char* src = "www.gyarmy.com";
09    _memcpy(dest,src,strlen(src)+1);
10     
11    return 0;
12}


ARM代码:


01;_memcpy
02    AREA Mfcode,CODE,READONLY
03    EXPORT _memcpy
04 
05_memcpy
06    STMFD SP!,{R4,LR}
07    mov r3,r0
08    mov r7,r1
09     
10copy
11    CMP r2,#0
12    BLE exit
13    LDRB r4,[r7]
14    STRB r4,[r3]
15    ADDS r7,r7,#1
16    ADDS r3,r3,#1
17    SUBS R2,R2,#1
18    BEQ exit
19    B copy
20 
21exit
22    LDMFD SP!,{r4,PC}
23    END


demo3

原文链接: ARM测试demo 版权所有,转载时请注明出处,违者必究。
注明出处格式:流沙团 ( https://www.gyarmy.com/?post=461 )

发表评论

0则评论给“ARM测试demo”