demo1: 子程序,调用C函数
01 | AREA MfArm,CODE,READONLY |
02 | ENTRY |
03 | EXPORT main |
04 | IMPORT strcmp |
05 |
06 | big |
07 | DCB "hello world" ,0 |
08 | small |
09 | DCB "hello world" ,0 |
10 |
11 | main |
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 |
26 | ADD_SUM |
27 | ADD R0,R0,R1 |
28 | BX LR |
29 | |
30 | stop |
31 | END |
demo2: C语言调用 ARM汇编
C代码:
01 | #include<stdio.h> |
02 | #include<string.h> |
03 |
04 | extern void * _memcpy( void * dest, void * src, size_t size); |
05 | int 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 | |
10 | copy |
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 |
21 | exit |
22 | LDMFD SP!,{r4,PC} |
23 | END |
demo3
0则评论给“ARM测试demo”