RISC v函數(shù)調用約定、寄存器傳參

您好,我這邊有一個關于函數(shù)傳參的問題,代碼如下:

_User_Enter(0x8010021U,0x2001FFF0,0U);//我想進入用戶模式,第一個參數(shù)為入口地址,該函數(shù)用匯編實現(xiàn)
//我在測試,所以暫時未用到第二第三個參數(shù)

_User_Enter:

li t0, 0x00001800

csrc mstatus, t0

la t0, 1f

csrw mepc, t0

mret

1:

jr a0

將mstatus寄存器MPP位設為用戶模式后,轉到a0地址,也就是進入我的用戶態(tài)代碼。在這段代碼中,a0寄存器是不是應該保存我的函數(shù)的第一個參數(shù)0x8010021。但是在單步調試下,我發(fā)現(xiàn)a0和我預想的并不一樣。

在剛進入_User_Enter:這個函數(shù)時,a0,a1,a2,三個寄存器分別為0x8010021,0x2001FFF0,0,確實是函數(shù)傳入的參數(shù),但是一旦運行完我上邊匯編代碼的第一行,a0寄存器的內容就會突然變化,變成0xe000 0000,附調試圖。

a0寄存器的變化和我匯編代碼沒有關系,我試了一下不同的寫法,甚至只寫一行任意的匯編代碼,只要開始運行,a0寄存器的內容就會變?yōu)?xe000 0000,感到十分奇怪。我也嘗試了傳入不同的參數(shù),仍然會發(fā)生相同的結果。

請問我在哪里出了問題,期待答復,十分感謝!

1685323046464464.png

1685323051111234.png


您好,這邊在MRS185版本試驗了一下,沒有復現(xiàn)。如下圖所示,您可以用最新版本按照下圖中的方式來使用。

image.png


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频