Mic*_*urr 51
主要区别:
ARM是RISC风格的体系结构 - 指令具有常规大小(标准ARM为32位,Thumb模式为16位,但Thumb有一些指令可以咀嚼2个指令'插槽')
通过至少ARM v5架构(我不确定v6是做什么),ARM上的中断模型与英特尔有很大不同 - 而不是将寄存器推入堆栈,ARM交换到一组不同的寄存器'正常的一套.处理器的模式确定哪个寄存器文件是可见的(并且不是所有寄存器都必须被遮蔽).这是一个相当复杂的安排.较新的ARM架构(无论如何,v7)都有一个更接近英特尔的中断模型,当中断发生时寄存器被压入堆栈.
Arm指令有一些不在英特尔的有趣功能:
另一方面,除了从内存加载和存储外,ARM不能直接对内存做很多事情.英特尔组件可以直接在内存上执行更多操作.
请注意,ARM体系结构版本与实际ARM处理器版本不直接对应 - 例如,如果我没记错,ARM7是体系结构v5处理器.就个人而言,我发现这比应该更加混乱.
ARM体系结构参考可从http://www.arm.com免费下载.我还建议将Hitex指南的副本提供给各种ARM微控制器,以获得良好的起点.
有关ARM入门指南的几个Stackoverflow问题.检查它们将为您提供许多好的开始:
Cli*_*ord 11
您还应该意识到ARM许可他们的IP而不是生产芯片.被许可方可以通过多种方式配置其ARM核微处理器.最重要的是,您的问题是ARM内核本身只定义了两个中断IRQ和FIRQ,最常见的是,有一个供应商特定的中断控制器,因此如果您需要知道如何使用,您需要准确知道设备中使用的微处理器处理中断.iPAQ型号使用了各种Intel StongARM和XScale处理器.如果要在该级别进行开发,则应下载特定部分的用户参考手册.
总而言之,操作系统提供了中断服务和设备驱动程序,因此您可能不需要担心这种低级别的细节.事实上,我会质疑汇编程序的选择是你的开发语言.在ARM上几乎没有理由选择汇编程序而不是C语言编写C++(编译器几乎肯定会在代码性能方面表现出色).此外,在Windows Mobile上,最高效的应用程序级语言可能是C#.