keil_arm混合编译

atart.s

.text  
.global _start  

_start:      
	ldr sp,=0x40000800
	b main
stop:        
     b stop
.end  

main.c

int sum1 = 0;
int sum2 = 0;
int add1_func(int a,int b,int c,int d);
int add2_func(int a,int b,int c,int d)
{
	asm volatile(
			"add r0,r0,r1\n\t"
			"add r0,r0,r2\n\t"
	    "add r0,r0,r3\n\t"
	:"=r"(sum2)
	:"r"(a),"r"(b),"r"(c),"r"(d)
	:
	);
	return sum2;
}
int main()
{
	sum1 = add1_func(1,2,3,4);
	sum2 = add2_func(4,5,6,7);
	while(1);
	return 0;
}

add.s

.text
.global add1_func
	add1_func:
	add r0,r0,r1
	add r0,r0,r2
	add r0,r0,r3
	mov pc,lr
.end

map.lds

./Objects/start.o(.text)

猜你喜欢

转载自blog.csdn.net/lsw2604190117/article/details/131481239