ARM彙編(第四天)混合程式設計
阿新 • • 發佈:2018-12-22
混合程式設計(彙編與高階語言如C、C++的混合程式設計)
---C語言嵌入彙編
---C語言調用匯編
---彙編呼叫C語言
------例項:功能:資料複製
void my_strcpy(char *src,char *des) { char ch; __asm{ loop: LDRB ch,[src],#1 STRB ch,[des],#1 CMP ch,#0 BNE loop } } int main() { char *a ="Hello,nice to see you!"; char b[25]; my_strcpy(a,b); return 0; }
------C語言調用匯編步驟
1、彙編export
2、C語言中定義 extern function
3、C語言使用
C語言和組合語言之間的引數傳遞是通過對應的R0~R3,即R0傳遞第一個引數,R1傳遞第二個引數,多於4個引數時藉助棧來完成。函式的返回值通過R0來傳遞。
//main.c extern void my_add(char * a,char * b); int main() { char *a ,*b; *a = 4; *b = 5; my_add(a,b); return 0; } //my_sub.s AREA asm,CODE,READONLY EXPORT my_add my_add LDRB R4,[R0] LDRB R5,[R1] ADD R6,R4,R5 END
------彙編使用C語言步驟:
1、C語言實現函式
2、彙編import C中函式名
3、BL 函式名
4、返回:MOV PC ,LR
//彙編程式呼叫C函式
//彙編.s
AREA asm,CODE,READONLY
IMPORT fun
ENTRY
start
MOV R0,#3
MOV R1,#4
MOV R2,#5
BL fun
MOV R4,R0
END
//fun.c
int fun(int a,int b,int c)
{
return a+b+c;
}