[英]Why did RV64 introduce new opcodes for 32-bit operations instead of the 64-bit ones
[英]Does 64-bit RISC-V RV64 allow access to the low 32 bits of registers?
我正在使用 64 位 RISC 處理器,我有疑問我們可以單獨訪問 64 位寄存器的低 32 部分嗎? 與 AArch64 的情況一樣,其中 x0 代表整個 64 位寄存器,而 w0 對應於同一寄存器的 32 位部分。
我們在 RISC-V 中有這種功能嗎?
64 位 RISC-V 有 64 位寄存器。 它們不使用不同的寄存器名稱來指示 32 位操作,而是使用不同的助記符(例如, addw
表示單個 32 位字寬,而add
表示完整寄存器)。 大多數(?)指令以 32 位形式和全角形式提供。
int add(int a,int b){
return a+b;
}
long long add64(long long a,long long b){
return a+b;
}
由 GCC10.2 為 Godbolt 上的 rv64gc編譯
add:
addw a0,a0,a1
ret
add64:
add a0,a0,a1
ret
另請參閱如果我們不關心向后兼容,干凈的 64 位指令集只有 64 位寄存器是否有意義? 回復:對於具有不同助記符的 MIPS/RISC-V 與具有 reg 名稱的 AArch64,這只是 asm 語法的問題。
(盡管有特殊的助記符可以更清楚地表明,並非每條 64 位指令都必須具有 32 位操作數大小的版本。例如, auipc
不需要將地址截斷為 32 位的形式。)
另請參閱為什么 RV64 為 32 位操作引入了新的操作碼而不是 64 位操作碼:設計決策。 進一步相關:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.