毕昇杯专用 ARMv7 汇编急救
总览
主要参考文章: https://thinkingeek.com/arm-assembler-raspberry-pi/
绝大部分示例代码都是从此文章抄来的
这篇参考文章偏向于使用 ARM 汇编进行开发的入门, 期望读者水平为学过 C, 还教了一些算法啥的. 作者还有一本书, 200来页, 书比网站上的更加系统, 建议看书.
当然如果我写错了什么, 那当然是我的问题, 不关作者事.
这是一份对 ARMv7 汇编的急救指南, 目的是以最快速度提供 “实现一个 target 到 ARMv7 的 C 编译器” 所需要的 ARM 汇编知识. 本文章假设读者熟悉汇编语言与 C, 至少看过 CSAPP 的第 4 章, 并且了解一些编译技术.
本文章 没有 :
- 任何对 不同模式 的介绍与说明 (也就是只考虑 User 模式)
- 任何对 浮点运算 的介绍与说明
- 对一些指令的完全介绍, 比如 ldm/stm
- 对规范的完整解释
本文章的介绍顺序大体按照那本书里的顺序, 为了方便查阅, 根据主题分类索引如下:
- 总览 & 框架: 基本架构
- 寄存器: 寄存器
- 分支: 分支, 控制结构的翻译, 条件执行
- 内存与取址模式: 内存, 基本取址模式, load/store 特有的取址
- 函数: 函数, 但不含栈, 函数, 但不含局部变量, 函数, 齐活了
- 动手实践: 用 GDB 调试汇编程序, 用 GCC 交叉编译 C 代码到 ARMv7 可执行文件并反编译