为什么所有ARM引导加载程序都有汇编代码?

use*_*606 4 assembly arm bootloader

用汇编语言编写可以减少代码大小和执行时间.但是假设我有足够的记忆和足够的时间.我可以只使用C代码并启动设备吗?我的意思是,从开机,直接运行C代码.我对ARM处理器特别感兴趣.

Igo*_*sky 6

实际上,您可以为ARM的Cortex-M3微控制器制作纯C固件.因为它的向量表包含堆栈指针的一个条目,所以它的值将由处理器初始化,你可以直接使用已编译的代码重置.您仍然需要设置外围设备并初始化C库环境,但您不必在汇编程序中执行此操作.Cortex-M3还会自动在中断处理程序入口上保存易失性寄存器,因此它们也可以直接用C语言写入.

也就是说,大多数编译器供应商仍提供用汇编程序编写的启动,因为它提供了最多的控制.