国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【RISC-V】 li指令

這篇具有很好參考價值的文章主要介紹了【RISC-V】 li指令。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在RISC-V中有這樣一條偽指令:

li a0, immediately

可以將任意的32位數(shù)據(jù)或者地址加載到指定的寄存器中

在 RV32I中,它擴展到 lui 和/或 addi

li 何時擴展為 lui 或者 addi呢?又何時擴展為lui 和 addi呢?

我們觀察lui 和 addi 的指令碼即可得出結(jié)果
【RISC-V】 li指令
【RISC-V】 li指令
由上圖可知,lui加載的立即數(shù)為高20位,addi加載的立即數(shù)為低12位

由此得出結(jié)論

  • li 加載的立即數(shù)范圍為:0~4096 時,會擴展成 addi 指令

    li a0, immediately ? addi a0, x0, imme

  • li 加載的立即數(shù)范圍超過4096時,會擴展成 lui 指令addi 指令

    li a0, immediately 擴展成
    1、lui a0, (immediately >> 12)
    2、addi a0, a0, (immediately & 0xFFF)

  • li 加載的立即數(shù)范圍超過4096時,并且低12位為0,會擴展成 lui 指令

    li a0, immediately
    擴展成
    lui a0, (immediately >> 12)


接上文,觀察 lui指令、addi指令 會得到這個結(jié)果:lui指令加載的立即數(shù)為無符號,無需注意。addi指令加載的為有符號數(shù),這個需要考慮一下立即數(shù)的符號位

假如我們要加載大立即數(shù)到指定的寄存器,需要考慮兩種情況

1、第11位為0

第11位為0,則指令:li a0, immediate 會直接擴展成:

lui   a0,  immediate >> 12
addi  a0, a0, (immediate & 0xFFF)

2、第11位為1

第11位為1,此時 li a0, immediate 就不會擴展成

lui   a0,  immediate >> 12
addi  a0, a0, (immediate & 0xFFF)

而是擴展成

lui   a0,  ((immediate >> 12) + 1)
addi  a0, a0, ((immediate & 0xFFF) - 2^12)

解釋一下:

addi指令所加載的立即數(shù)的第11位為1時,這個立即數(shù)是符號擴展的,因此加數(shù)將為負數(shù)。這意味著除了添加常量的最右邊11位
之外,我們還需要減去2^12。為了彌補這個錯誤,只需將lui 加載的常量添加一個1,因為 lui 常量縮小了 2 ^12倍

例如:將 0xE76 加載到寄存器a0中
答:文章來源地址http://www.zghlxwxcb.cn/news/detail-405257.html

lui   a0,  0x01
addi  a0, a0, (0xE76 - 4096)

代碼實現(xiàn)

#define immediate  XXXX

uint32_t MSB, LSB;
MSB = immediate >> 12;
LSB = immediate & 0xFFF;

if (MSB == 0) {
	if (LSB & 0x800) {
		asm volatile("lui a0, 0x01"); 
		asm volatile("addi a0, a0, LSB - 4096"); 
	} else {
		asm volatile("addi a0, x0, LSB"); 
	}
} else {
	if (LSB & 0x800) {
		asm volatile("lui a0, MSB + 0x01"); 
		asm volatile("addi a0, a0, LSB - 4096"); 
	} else {
		asm volatile("lui a0, MSB"); 
		asm volatile("addi a0, x0, LSB"); 
	}
}

到了這里,關(guān)于【RISC-V】 li指令的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • RISCV 6 RISC-V加載存儲指令

    RISCV 6 RISC-V加載存儲指令

    RISCV - 1 RV32/64G指令集清單 RISCV - 2 “Zicsr“, CSR Instructions RISCV -3 RV32I/RV64I基本整型指令集 RISCV - 4 ISA 擴展名命名約定 RISCV 5 RISC-V調(diào)用規(guī)則 RV32I is a load-store architecture, where only load and store instructions access memory and arithmetic instructions only operate on CPU registers. RV32I provides a 32-bit address s

    2024年02月10日
    瀏覽(29)
  • RISC-V基礎(chǔ)之浮點指令(包含實例)

    RISC-V基礎(chǔ)之浮點指令(包含實例)

    RISC-V體系結(jié)構(gòu)定義了可選的浮點擴展,分別稱為RVF、RVD和RVQ,用于操作單精度、雙精度和四倍精度的浮點數(shù)。RVF/D/Q定義了32個浮點寄存器,f0到f31,它們的寬度分別為32位、64位或128位。當(dāng)一個處理器實現(xiàn)了多個浮點擴展時,它使用浮點寄存器的低位部分來執(zhí)行低精度的指令。

    2024年02月13日
    瀏覽(32)
  • 19|RISC-V指令精講(四):跳轉(zhuǎn)指令實現(xiàn)與調(diào)試

    19|RISC-V指令精講(四):跳轉(zhuǎn)指令實現(xiàn)與調(diào)試

    你好,我是LMOS。 前面我們學(xué)習(xí)了無條件跳轉(zhuǎn)指令,但是在一些代碼實現(xiàn)里,我們必須根據(jù)條件的判斷狀態(tài)進行跳轉(zhuǎn)。比如高級語言中的if-else 語句,這是一個典型程序流程控制語句,它能根據(jù)條件狀態(tài)執(zhí)行不同的代碼。這種語句落到指令集層,就需要有根據(jù)條件狀態(tài)進行跳轉(zhuǎn)

    2024年01月22日
    瀏覽(26)
  • RISC-V(2)——特權(quán)級及特權(quán)指令集

    RISC-V(2)——特權(quán)級及特權(quán)指令集

    目錄 1.? 特權(quán)級 2.?控制和狀態(tài)寄存器(CSR) 2.1 分類 ?2.2 分析? ?? ? ????????一個 RISC-V 硬件線程( hart )是運行在某個特權(quán)級上的,這個特權(quán)級被編碼到一個或者多個 CSR (control and status register, 控制和狀態(tài)寄存器 )中的一種模式。 ????????當(dāng)前定義了四種特權(quán)級

    2024年02月10日
    瀏覽(26)
  • 從CISC到RISC-V:揭開指令集的面紗

    從CISC到RISC-V:揭開指令集的面紗

    對于大多數(shù)同學(xué)來說,計算機或智能手機的運行似乎就像魔法一樣神奇。你可能知道它們內(nèi)部都是一些復(fù)雜的電子組件,比如CPU、內(nèi)存等等,但這些組件是如何協(xié)同工作,讓我們可以在電腦上打字,或者在手機上看視頻呢?實際上,這一切都歸功于一種名為“指令集”的神秘

    2024年01月21日
    瀏覽(24)
  • RISC-V處理器的設(shè)計與實現(xiàn)(一)—— 基本指令集

    RISC-V處理器的設(shè)計與實現(xiàn)(一)—— 基本指令集

    RISC-V處理器的設(shè)計與實現(xiàn)(一)—— 基本指令集_Patarw_Li的博客-CSDN博客 RISC-V處理器的設(shè)計與實現(xiàn)(二)—— CPU框架設(shè)計_Patarw_Li的博客-CSDN博客 RISC-V處理器的設(shè)計與實現(xiàn)(三)—— 上板驗證_Patarw_Li的博客-CSDN博客 RISC-V處理器設(shè)計(四)—— Verilog 代碼設(shè)計-CSDN博客? RISC-V處

    2024年02月05日
    瀏覽(26)
  • RISC-V指令集架構(gòu)------RV32F/RV32D浮點擴展指令集

    RISC-V指令集架構(gòu)------RV32F/RV32D浮點擴展指令集

    ? ? RV32D和RV32F是RISC-V指令集架構(gòu)中的浮點擴展指令,用于支持浮點運算。其中,RV32D是雙精度浮點擴展指令,而RV32F是單精度浮點擴展指令。在RISC-V中,浮點擴展指令是可選的,需要根據(jù)具體應(yīng)用場景來選擇是否使用。如果應(yīng)用場景需要進行浮點運算,那么就需要使用RV32D和

    2024年02月08日
    瀏覽(23)
  • 【基于FPGA的芯片設(shè)計】RISC-V的20條指令CPU設(shè)計

    【基于FPGA的芯片設(shè)計】RISC-V的20條指令CPU設(shè)計

    實驗板卡 :xc7a100tlc sg324-2L,共20個開關(guān) 實驗要求: ? ? ? ? ?

    2024年02月16日
    瀏覽(32)
  • 【RISC-V DSP設(shè)計】基于CEVA DSP架構(gòu)的指令集分析(二)-函數(shù)列表

    目錄 表3-1:定點濾波器功能 表3-2:定點快速傅里葉變換(FFT)函數(shù) 表3-3:定點數(shù)學(xué)函數(shù) 表3-4:定點三角函數(shù) 表3-5:定點向量函數(shù) 表3-6:定點矩陣函數(shù) 表3-7:浮點濾波器函數(shù) 表3-8:浮點快速傅里葉變換(FFT)函數(shù) 表3-9:浮點數(shù)學(xué)函數(shù) 表3-10:浮點三角函數(shù) 表3-11:浮點向量

    2024年02月19日
    瀏覽(31)
  • 使用 C++23 從零實現(xiàn) RISC-V 模擬器(4):完善 log 支持并支持更多指令

    ???? 文章匯總「從零實現(xiàn)模擬器、操作系統(tǒng)、數(shù)據(jù)庫、編譯器…」:https://okaitserrj.feishu.cn/docx/R4tCdkEbsoFGnuxbho4cgW2Yntc 這一節(jié)內(nèi)容解析了更多的指令,并且提供了更詳細的 log 輸出從而進一步的定位問題。 具體代碼可以參考這個分支的代碼:https://github.com/weijiew/crvemu/tree/lab4

    2024年02月20日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包