13. The ARMv8-A instruction sets

ARMv8-A相關(guān)歷史文章:

A64指令集和A32指令集類似,都是32bit寬,并且有類似的語法。指令集使用ARMv8-A體系結(jié)構(gòu)中的通用命名約定,以前的32-bit指令集命名如下:

  • A32,在AArch32執(zhí)行狀態(tài)下,A32與ARMv7-A在很大程度上都是兼容的,不過還是存在一些差異。A32也提供了一些新的指令來與A64指令集中的某些特性來對(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ì),越來越多的32-bit代碼都開始利用Thumb-32的技術(shù)。

所有的A64指令都是相同的長(zhǎng)度,不像T32是可變長(zhǎng)的指令集。這個(gè)可以使管理和跟蹤生成的代碼序列更容易,尤其在動(dòng)態(tài)代碼生成器上。

13.1 Switching between instruction sets

在單個(gè)應(yīng)用程序中不可能使用來自兩種執(zhí)行狀態(tài)的代碼,在A64和A32或T32指令集中,沒有交互操作。
以A64編寫的代碼不能在ARMv7-A系列處理器中運(yùn)行,而為ARMv7-A處理器編寫的程序可以在ARMv8-A處理器中的AArch32狀態(tài)下運(yùn)行:


13.2 Addressing

當(dāng)處理器能使用單個(gè)寄存器來保存64-bit的值時(shí),在程序中訪問大內(nèi)存就變得簡(jiǎn)單了。32-bit的程序訪問的地址范圍限制在4G,大部分的可尋址空間都被保留給了操作系統(tǒng)內(nèi)核、庫、外設(shè)等,空間不足意味著程序在執(zhí)行時(shí)可能需要映射內(nèi)存中的一些數(shù)據(jù)。使用64-bit的指針,有較大的地址空間,可以避免這個(gè)問題,同時(shí)也使內(nèi)存映射文件技術(shù)的使用變得更方便,也更具有吸引力。即使物理RAM可能不夠大來包含整個(gè)文件,文件的內(nèi)容可以被映射到內(nèi)存空間中。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容