簡體   English   中英

64 位 RISC-V RV64 是否允許訪問寄存器的低 32 位?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM