亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在x86-64 Linux中不再允許32位絕對地址?

在x86-64 Linux中不再允許32位絕對地址?

MM們 2019-06-05 10:48:37
在x86-64 Linux中不再允許32位絕對地址?64位Linux默認使用小內存模型,將所有代碼和靜態數據都置于2GB的地址限制之下。這確保您可以使用32位絕對地址.舊版本的GCC為靜態數組使用32位絕對地址,以節省用于相對地址計算的額外指令。然而,這已經行不通了。如果我試圖在程序集中創建一個32位絕對地址,就會得到鏈接器錯誤:“在創建共享對象時不能使用針對`.data‘的重新定位R_X86_64_32S;使用-FPIC重新編譯”。當然,這個錯誤消息是誤導的,因為我沒有創建一個共享對象,而且-FPIC也沒有幫助。到目前為止,我發現的是:GCC版本4.8.5使用32位絕對地址作為靜態數組,GCC版本6.3.0沒有。第5版可能也沒有。binutils 2.24中的鏈接器允許32位絕對地址,第2.28節不允許.這種更改的結果是,舊庫必須重新編譯,遺留程序集代碼被破壞?,F在我想問一問:這個變化是什么時候發生的?在什么地方有記錄嗎?是否有鏈接器選項使其接受32位絕對地址?
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 791 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號