變量名和內存地址及符號表


轉載

1、變量名是給編譯器看的,編譯器根據變量是局部還是全局分配內存地址或棧空間,所謂的變量名在內存中不存在,操作時轉換成地址數存放在寄存器中了。其實可以理解為是符號表起到了連接作用。

2、符號表 (此段摘抄網上一個課件)

     符號表在編譯程序工作的過程中需要不斷收集、記錄和使用源程序中一些語法符號的類型和特征等相關信息。這些信息一般以表格形式存儲於系統中。如常數表、變量名表、數組名表、過程名表、標號表等等,統稱為符號表。對於符號表組織、構造和管理方法的好壞會直接影響編譯系統的運行效率。

    在編譯過程中需要不斷匯集和查證出現在源程序中的各種名字的屬性和特征等信息編譯器使用符號表來記錄名字的作用域以及綁定信息編譯程序中符號表用來存放語言程序中出現的有關標識符的屬性信息,符號表中的信息在編譯的不同階段都用到在語義分析中,符號表所登記的內容將用於語義檢查(如檢查一個名字的使用和原先的說明是否一致)和產生中間代碼在目標代碼生成階段,當對符號名進行地址分配時,符號表是地址分配的依據。對一個多遍掃描的編譯程序,不同遍所用的符號表也往往各有不同。因為每遍所關心的信息各有差異。

     符號表的屬性:

      符號名 
      符號的類型
      符號的存儲類別 
      符號的作用域及可視性 
      符號變量的存儲分配信息 
      符號的其它屬性
      數組內情向量 
     記錄結構型的成員信息
     函數及過程的形參 

 

 

 

    符號表的組織結構           

  第一種: 把屬性種類完全相同的那些符號組織在一起,構造出多個符號表常數表、變量名表、過程名表,標號表
 第二種: 把所有語言中的符號都組織在一張符號表中。組成一張包括了所有屬性的龐大的符號表

   符號表例子:

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM