继续关于单片机的动态加载的研究(1)

2019-04-15 19:28发布

这次研究与之前不同,之前从elf文件入手,这次从编译器入手,并且切实发现了可以成功的途径。 编译器armcc,连接器armlink, Cortex M3反汇编分析工具:mdisasm 编译命令:armcc -c --cpu Cortex-M3 -O0 --apcs=interwork --apcs /r
opi/rwpi main.c fun.c main.c extern int func(int a); static int b=0xffffffff; int main(void){     b=10;     return func(b); } fun.c int s; int func(int a){     s=0xffff;     return a+s; } 编译命令:armcc -c --cpu Cortex-M3 -O0 --apcs=interwork --apcs /r opi/rwpi main.c fun.c 链接命名:armlink.exe --cpu Cortex-M3 --ropi --ro_base 0x0 --
rwpi --rw_base 0x0 --entry=main --first=main --no_startup --remove main.o
 fun.o -o main.elf 得到rw部分: 这一看出代码是与地址无关的,访问data靠r9与$d所指的偏移共同实现。 下一步开始我的星辰大海。