我现在要学习 ARM 汇编语言,以便为我的 Windows Mobile 5 iPAQ 开发,但我有一些问题:
- ARM 汇编语言和 x86 汇编语言的主要区别是什么?
- 在中断方面是否有任何不同(新类型)?
- 它们是什么,它们的含义是什么?
- 最好的汇编器在哪里获取?
- 在中断方面是否有任何不同(新类型)?
- 我可以在哪里找到一些好的资源?
我现在要学习 ARM 汇编语言,以便为我的 Windows Mobile 5 iPAQ 开发,但我有一些问题:
主要区别:
ARM是一种RISC风格的架构 - 指令具有固定大小(标准ARM为32位,Thumb模式为16位,尽管Thumb有一些指令会占用2个指令“插槽”)
至少到ARM v5架构(我不确定v6做了什么),ARM上的中断模型与英特尔大相径庭 - 它不是将寄存器推入堆栈,而是切换到另一个集合的寄存器,这些寄存器“影子”正常的寄存器。处理器的模式决定了哪个寄存器文件可见(并非所有寄存器都一定被遮蔽)。这是一个相当复杂的安排。较新的ARM架构(至少在v7上)具有更接近英特尔的中断模型,在中断发生时将寄存器推入堆栈。
Arm指令具有一些有趣的特性,Intel没有:
另一方面,ARM除了从内存中加载和存储之外,不能直接执行更多内存操作。Intel汇编可以直接在内存上执行更多操作。
请注意,ARM架构版本与实际ARM处理器版本并不直接对应 - 例如,如果我没记错,ARM7是一个架构v5处理器。个人认为,这比它应该的要更令人困惑。
可以从http://www.arm.com免费下载ARM架构参考资料。我还建议获取Hitex各种ARM微控制器指南,作为一个很好的起点。
关于入门 ARM 的指针有几个 Stackoverflow 问题。回顾它们将为你提供很多好的起点: