第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 編譯器在 x0 中產(chǎn)生奇怪的負載

Go 編譯器在 x0 中產(chǎn)生奇怪的負載

Go
夢里花落0921 2022-06-21 10:07:57
我正在使用帶有 linux/riscv64 目標的 Go 1.14,并且我正在編譯一個 hello world,我在程序集中看到了這個:1b078:       04813183                ld      gp,72(sp)1b07c:       00018003                lb      zero,0(gp)1b080:       00313423                sd      gp,8(sp)正如您所看到的,從 [GP+0] 開始,負載為零,根據(jù)規(guī)范,這應該是“異?;蚱渌保杭词辜虞d值被丟棄,目標為 x0 的加載仍必須引發(fā)任何異常并導致任何其他副作用。這里到底發(fā)生了什么?編譯器是否產(chǎn)生錯誤的輸出?
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經(jīng)驗 獲得超4個贊

我對繼續(xù) riscv 一無所知,但這是一種常見的模式。

內(nèi)存訪問僅檢查 [gp+0] 是否可訪問和可讀,而無需實際讀取。

這對于以下情況很有用:


func f(a *[0x100001]byte) {

    (*a)[0x100000] = 1;

}

編譯器必須生成以下偽代碼:


check_not_null(a)

store(a + 0x100000, 1)

可以使用您發(fā)現(xiàn)的相同構(gòu)造來實現(xiàn)空檢查,而無需分支。


查看完整回答
反對 回復 2022-06-21
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號