ARM7 和 ARMv7 是不一樣的東西。前者是微架構 (micro architecture) 或稱 family,後者指的是指令集架構 (instruction set architecture) 或稱 architecture。Cortex 屬微架構,實作 ARMv7 指令集。Cortex A15 加入虛擬化支援。
* [[wp>ARM7#ARM7TDMI|ARM7TDMI]]
* ARM7 + 16 bit Thumb + JTAG Debug + fast Multiplier + enhanced ICE
* 支援 ARMv4 指令集。廣泛應用於手機。
ARM 中所稱的 byte,halfword 和 word 分別為 8,16 和 32 位。
* [[http://www.valleytalk.org/wp-content/uploads/2010/12/armx86.pdf|ARM 与 x86]]
* [[http://www.valleytalk.org/2010/11/27/arm%E4%B8%8Ex86-wintel%E5%B8%9D%E5%9B%BD/|ARM与x86–Wintel帝国]]
* [[http://www.valleytalk.org/2011/12/03/arm%E7%9A%84%E4%B8%89%E5%A4%A7%E5%AE%B6%E6%97%8F%E9%98%B6%E7%BA%A7%E6%88%90%E5%88%86%E5%92%8C%E7%9B%B8%E5%BA%94%E7%9A%84%E5%AF%8C%EF%BC%88%E7%A9%B7%EF%BC%89n%E4%BB%A3-%E5%88%86%E7%B1%BB%E3%80%82/|ARM的三大家族阶级成分和相应的富(穷)N代 分类]]
* [[http://www.botskool.com/user-pages/tutorials/electronics/arm-7-tutorial-part-1|ARM 7 Tutorial - Part 1]]
* [[http://www.informit.com/articles/article.aspx?p=1620207|Understanding ARM Architectures]]
* [[http://itee.uq.edu.au/~esg/about/public/arm-intro.ppt|The ARM Architecture]]
* [[http://simplemachines.it/doc/arm_inst.pdf|The ARM Instruction Set]]
* [[http://kezeodsnx.pixnet.net/blog/post/27989054-arm-architecture|arm architecture]]
* [[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka4127.html|8 Byte Stack Alignment]]
* [[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cihidceh.html|QADD, QSUB, QDADD, and QDSUB]]: 當一般算術運算發生溢位,或是飽和(意指溢位不會發生,達到其最大/最小值就會停止)算術運算達到飽和,會將 [[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473c/Ciheihge.html|Q flag]] 設為 1。一般算術運算或是飽和算術運算只能設置 Q flag 而不能將其清除,因此 Q flag 又稱 sticky flag。
* [[http://www.cs.umass.edu/~trekp/cs201/lecture_notes/lecture11.txt|Lecture 11: Instruction encoding]]
* Thumb [[http://lists.cs.uiuc.edu/pipermail/llvmdev/2011-October/044132.html|[LLVMdev] LLC ARM Backend maintainer]]
* [[http://www.cis.nctu.edu.tw/~wuuyang/papers/Odes7.pdf|On Static Binary Translation and On Static Binary Translation and
Optimization for ARM based Applications]]
* [[http://www.cs.princeton.edu/~thhung/pubs/odes08.slides.pdf|On Static Binary Translation and On Static Binary Translation and
Optimization for ARM based Applications]]
針對自修改代碼,ARM 需要做額外的工作[(http://people.cs.nctu.edu.tw/~chenwj/log/QEMU/friggle-2012-01-11.txt)]。
* [[http://blog.csdn.net/arriod/article/details/2826959|ARM使用术语清除(flush)和清理(clean)表示对cache的两种基本操作]]
* [[https://mail.mozilla.org/pipermail/tamarin-devel/2008-July/000826.html|ARM/Thumb cache flushing problem under Linux]]
* 架構
* 指令
* 中斷/例外處理
* user stack, kernel stack 和 interrupt stack。
* [[http://www.ic.unicamp.br/~celio/mc404-2013/arm-manuals/ARM_exception_slides.pdf|Exception and Interrupt Handling in ARM]]
* [[http://www.iti.uni-stuttgart.de/~radetzki/Seminar06/08_report.pdf|Exception and Interrupt Handling in ARM]]
* 內存系統
* 匯流排
* 除錯支援
====== 處理器 ======
===== 暫存器 =====
以 application level view 來看,ARM 的 register 有 16 個,分別是 R0 - R12,SP (Stack Pointer),LR (Link Register) 和 PC (Program Counter)。這 16 個暫存器,根據 Security Extensions 是否有被實作,從 31 或 33 個暫存器中選出來。選擇方式是根據當前處理器所處的模式來決定。對於某些暫存器,ARM 會提供額外的拷貝。這些擁有額外拷貝的暫存器被稱為 banked (shadow/private) register。[[http://www.heyrick.co.uk/assembler/regs.html|Registers and Processor Modes]] 中的 "Register 8 to register 12 are general purpose registers, but they have shadow registers which come into use when you switch to FIQ mode." 代表當處理器為 FIQ (Fast interrupt request) 模式下,R8 - R12 會從 shadow register (它們的拷貝) 中選用,以此來避免破壞 user mode 中 R8 -R12 的值。
* [[wp>ARM_architecture#Registers|ARM Register]]
* [[http://stenlyho.blogspot.com/2008/08/arm-register.html|ARM Register]]
* [[http://stackoverflow.com/questions/13432297/what-does-banking-a-register-mean|What does 'bank'ing a register mean?]]
* [[http://electronics.stackexchange.com/questions/102742/what-does-banking-mean-when-applied-to-registers|What does banking mean when applied to registers?]]
* [[http://jc.is-programmer.com/posts/28905.html|ARM 寄存器(综述)]]
* 備份暫存器
* CPSR (Current Program Status Register): 狀態暫存器。
* SPSR (Saved Program Status Register): 於中斷發生時,自動儲存 CPSR 之用。
===== 系統控制協處理器 =====
[[http://infocenter.arm.com/help/topic/com.arm.doc.ddi0290g/DDI0290G_arm1156t2fs_r0p4_trm.pdf|CP15]] 又稱系統控制協處理器 (system control coprocessor),其中有 c0 到 c15 暫存器,暫存器中的位可用來做不同的設置。透過指令 ''mrc'' 或是 ''mcr'' 讀寫 CP15 裡面的暫存器,''mrc'' 是將 CP15 (''c'') 的暫存器讀至通用暫存器 (''r''); ''mcr'' 則反之。CP15 上某些暫存器實際上有多個物理暫存器,必須透過 ''opcode_2'' 指定要存取哪一個。例如,CP15:c0 有 MIDR (Main ID Register)、CTR (Cache Type Register)、TCMTR (TCM Type Register) 等等。
The system control coprocessor appears as a set of 32-bit registers that you can write to
and read from.
''mcr'' 將 CP15 (''c'') 的暫存器讀至通用暫存器 (''r''),其指令格式為:
MCR ,,
* '''': 此指令在何種條件下方才執行,諸如: EQ、LE、GT 等等。
* '''': 欲存取的協處理器。
* '''': 主操作碼。
* ''