ARMv8-A相關(guān)歷史文章:
- 1. Fundamentals of ARMv8-A
- 2. Execute states
- 3. Changing Exception Levels
- 4. Changing Execution state
- 5. Registers
- 6. Processor state
- 7. The Saved Process Status Register
- 8. System Registers
- 9. The System Control Register
- 10. Changing Executing State (registers)
- 11. Register at AArch32
- 12. A64 instructions
A64指令集和A32指令集類似,都是32bit寬,并且有類似的語(yǔ)法缕溉。指令集使用ARMv8-A體系結(jié)構(gòu)中的通用命名約定箱蟆,以前的32-bit指令集命名如下:
- A32,在AArch32執(zhí)行狀態(tài)下豪硅,A32與ARMv7-A在很大程度上都是兼容的陌宿,不過(guò)還是存在一些差異。A32也提供了一些新的指令來(lái)與A64指令集中的某些特性來(lái)對(duì)齊涧黄。
- T32,Thumb指令集最早在ARM7TDMI處理器中被引入赋荆,只包含16-bit指令笋妥。16-bit指令集在犧牲一些性能的成本下可以提供很小的代碼。ARMv7-A處理器中窄潭,包括Contex-A系列春宣,支持Thumb-2技術(shù),Thumb-2擴(kuò)展了Thumb指令集嫉你,提供了16-bit和32-bit的混合指令月帝。這個(gè)可以在保持小的代碼尺寸下,提供與A32指令集相當(dāng)?shù)男阅苡奈邸U驗(yàn)樗拇笮『托阅軆?yōu)勢(shì)嚷辅,越來(lái)越多的32-bit代碼都開(kāi)始利用Thumb-32的技術(shù)。
所有的A64指令都是相同的長(zhǎng)度距误,不像T32是可變長(zhǎng)的指令集簸搞。這個(gè)可以使管理和跟蹤生成的代碼序列更容易,尤其在動(dòng)態(tài)代碼生成器上准潭。
13.1 Switching between instruction sets
在單個(gè)應(yīng)用程序中不可能使用來(lái)自兩種執(zhí)行狀態(tài)的代碼趁俊,在A64和A32或T32指令集中,沒(méi)有交互操作刑然。
以A64編寫的代碼不能在ARMv7-A系列處理器中運(yùn)行则酝,而為ARMv7-A處理器編寫的程序可以在ARMv8-A處理器中的AArch32狀態(tài)下運(yùn)行:
13.2 Addressing
當(dāng)處理器能使用單個(gè)寄存器來(lái)保存64-bit的值時(shí),在程序中訪問(wèn)大內(nèi)存就變得簡(jiǎn)單了闰集。32-bit的程序訪問(wèn)的地址范圍限制在4G沽讹,大部分的可尋址空間都被保留給了操作系統(tǒng)內(nèi)核、庫(kù)武鲁、外設(shè)等爽雄,空間不足意味著程序在執(zhí)行時(shí)可能需要映射內(nèi)存中的一些數(shù)據(jù)。使用64-bit的指針沐鼠,有較大的地址空間挚瘟,可以避免這個(gè)問(wèn)題,同時(shí)也使內(nèi)存映射文件技術(shù)的使用變得更方便饲梭,也更具有吸引力乘盖。即使物理RAM可能不夠大來(lái)包含整個(gè)文件,文件的內(nèi)容可以被映射到內(nèi)存空間中憔涉。