有关ARM的问题!

来源:百度知道 编辑:UC知道 时间:2024/06/17 13:46:04
最近看书时了解到ARM要有启动代码,一般用汇编写,首先写的是初始化异常向量表,如LDR PC, Reset ,而我们一般写代码有C语言,一定有个main函数,C语言的书上讲程序会从main函数处开始执行。
问题:
1.main函数编译后存储在存储器的地址0X00000000处吗?不是的话存储在哪里?如果是的话那么LDR PC, Reset 和main谁存储在0X00000000处;
2.ARM(其实很多处理器如51单片机等)复位后PC指向0X00000000处,那么ARM是执行LDR PC, Reset 还是main呢?
3.对于所有的处理器,如ARM、弹片机等,是不是都需要启动代码?
4.当有.S文件和.C文件的时候,且.S文件中就是启动代码(内有类似LDR PC, Reset 这样的处理器复位后的PC指向的位置存放的指令),编译器在编译的时候,LDR PC, Reset 和main是怎么编译的?哪个存储在0X00000000处?
5.编译器在编译文件的时候是从文件开头开始编译还是从某个地方(如.C文件中的main函数)开始编译的?编译器对.S文件和.C文件是分开编译的还是一起编译的,对于先存储哪个(LDR PC, Reset 和main)有什么规则嘛?
望各位大侠在回答问题的时候请指明是回答哪个问题,小弟现在对这些问题确实很迷茫,望大家指点!另外如果有什么好的能帮小弟解决这些问题的书籍希望推荐一下!谢谢!!!!!!!!

1.main函数编译后不存储0X00000000.而是Reset.
2.ARM指向的地址依据不同厂家不同的CPU有所不同.
3.一般单片机是不需要启动代码的,如8051,AVR,Msp430等,而计算机中的我们知道的什么Petium系列和ARM是需要启动代码的.
4.LDR PC, Reset是将PC指向Reset,实现绝对跳转..LDR PC, Reset放在CPU复位后指向的地址.
5.这个不知