[英]Does 64-bit RISC-V RV64 allow access to the low 32 bits of registers?
[英]Why did RV64 introduce new opcodes for 32-bit operations instead of the 64-bit ones
在通過RISC-V規范時,我注意到64位版本與32位版本的不同之處在於它
這使RV32代碼與RV64不兼容。 但是,如果64位版本已通過以下方式實現:
ADD/SUB/SHL/..
重命名為ADDW/SUBW/SHLW/..
並使它們僅在符號擴展的32位上運行。 ADD/SUB/SHL/..
或ADDD/SUBD/SHLD/..
以對完整的64位進行操作 這樣就可以讓RV32程序在RV64上運行。 為了實現CPU,工作量將保持不變,因為在這兩種情況下都必須實現64位和32位指令,並且只有64位和32位版本的操作碼才會被交換對比符合規范。 (除了可能是乘法指令。)
那么為什么RISC-V決定將新的操作碼分配給32位操作而不是RV64中的64位操作呢?
RV64和RV32完全兼容。 如果程序不依賴於隱式模32位算術且所有地址都適合32位,則機器代碼可能相同。 但是,將完整的RV32用戶模式添加到RV64處理器非常容易。
RV32的64位超集太復雜了。 AUIPC,JAL,LOAD,STORE和BRANCH沒有足夠的操作碼空間。 附加擴展會更糟糕。
RV64中的少數32位指令主要用於過度使用模32位算術的程序。 這是非常常見的問題。 但是,快速和可移植的代碼應該避免使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.