1. 程式人生 > >ARM彙編(第四天)混合程式設計

ARM彙編(第四天)混合程式設計

混合程式設計(彙編與高階語言如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;
}