有关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}//低地址存放低的寄存器fp,ip,lr
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