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

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

C編譯過程中,關于auto局部變量的符號表管理問題?

C編譯過程中,關于auto局部變量的符號表管理問題?

C
30秒到達戰場 2019-03-02 17:59:27
題目描述編譯程序編譯C語言的過程中,必須要通過操作符號表來確定各個被定義的符號(變量,數組,函數,標簽等)的地址,以便于將文本形式的代碼翻譯為二進制機器碼.而所得到的ELF文件(.o/.exe)中的符號表節區(.symtab)只包含存儲類型為static/extern的變量,而不包含auto局部變量.那么,局部變量是如何被編譯器翻譯的?題目來源及自己的思路來源: 編譯過程必須依靠符號表來實現.編譯過程輸出ELF文件,而ELF文件的符號表節區(.symtab)并不包含局部變量.那么,局部變量是如何編譯的呢?自己的思路: 1.ELF文件是編譯過程的輸出,是最終的結果,它的符號表節區(.symtab)也僅僅是符號表操作的最終結果,無法反映整個編譯過程的符號表變化.所以,在編譯過程進行的時候,局部變量是會出現在符號表之中的,而編譯程序據此確定局部變量的地址(局部變量位于棧中,其地址是相對棧指針sp的偏移量),進而實現對局部變量的翻譯.2.符號表的操作包含增加項目,查找項目,刪除項目.在編譯過程結束時,會跳出所有的函數與塊作用域,相應的,棧內存也會進行出棧操作.而與之相關的局部變量也會從符號表之中被刪除掉,只保留靜態變量static,全局變量以及外部變量extern.所以,最終的輸出ELF文件的符號表節區(.symtab)沒有局部變量的內容.問題期望1.上述的思路是否正確?2.如果不正確,錯誤在哪?要理解正確的思路,需要查找哪些方面的知識?
查看完整描述

2 回答

  • 2 回答
  • 0 關注
  • 723 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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