arm过程调用规范(小结7)

本文介绍了ARM11架构下的汇编基础知识,包括APCS调用标准、寄存器使用、指令流水线等内容,并详细解释了如何从汇编层面调用C语言函数,以及在不同操作系统下可执行文件的格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有关arm11汇编:

1.apcs:arm process call standard

2.arm寄存器的通用寄存器:(两套对应的名字,可以通用)

r0 ~r3   r4~r9    r10  r11  r12    r13    r14   r15

       a1~a4   v1~v6   sl    fp     lp      sp     lr      pc  -->c语言

补:

在由fork创建子进程时:

sp 由父进程,继承过来->执行的时候,来确定这个sp的值

3 汇编调c

4.指令流水线:

取指,译码,执行,访存,回写

pc永远保存取指的那一条指令

 

下面就是apcs调用规范:(在arm中调用其它程序的时候,我们保存当前的状态,)

mov ip,sp

stmdb sp!,{fp,ip,lr}//低地址存放低的寄存器fpiplr

sub fp,ip,#4

 //这里是我们要调用的子函数内容。

sub sp,fp,#8

ldmia sp,{fp,sp,pc}

 

5.gdb中加入一个-g :把pc也存上

mov ip,sp

stmdb sp!,{fp,ip,lr,pc}

sub fp,ip,#4

 

sub sp,fp,#12

idmia sp,{fp,sp,pc}

 

指令:

and  bic  tst  eor  orr  teq  mvn(要学习的)

 

注:

u-boot里面写程序,就是裸版开发

os里面就是应用开发

 

os默认的可执行文件的开头

linux elf

unix a.out

window pe

裸版开发编译链接过程:

arm-gcc -c test.S -o test.o

arm-ld -Ttext=0x50000000 text.o -o test

arm-objcopy -Ielf32-littlearm -O binary test /tftpboot/test.bin

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值