當前位置:首頁 » 編程軟體 » 地址消毒器編譯前後變化

地址消毒器編譯前後變化

發布時間: 2022-12-14 20:39:14

1. 簡述一下編譯器和鏈接器的作用

1、編譯器:
編譯器對源文件進行編譯,就是把源文件中的文本形式存在的源代碼翻譯成機器語言形式的目標文件的過程,在這個過程中,編譯器會進行一系列的語法檢查。如果編譯通過,就會把對應的CPP轉換成OBJ文件。
2、鏈接器:
當鏈接器進行鏈接的時候,首先決定各個目標文件在最終可執行文件里的位置。然後訪問所有目標文件的地址重定義表,對其中記錄的地址進行重定向(加上一個偏移量,即該編譯單元在可執行文件上的起始地址)。
然後遍歷所有目標文件的未解決符號表,並且在所有的導出符號表裡查找匹配的符號,並在未解決符號表中所記錄的位置上填寫實現地址。最後把所有的目標文件的內容寫在各自的位置上,再作一些另的工作,就生成一個可執行文件。

2. 在編譯時為內存分配了邏輯地址,之後連接生成了可執行文件,邏輯地址在運行時會發生變化嗎

應該不會沖突,每個程序在內存中佔用的空間都是獨立的,邏輯地址只是在它自己的空間里的相對地址,正常情況下不會有交集。

3. 編譯器的組成及各部分的功能及作用

1. 詞法分析 詞法分析器根據詞法規則識別出源程序中的各個記號(token),每個記號代表一類單詞(lexeme)。源程序中常見的記號可以歸為幾大類:關鍵字、標識符、字面量和特殊符號。詞法分析器的輸入是源程序,輸出是識別的記號流。詞法分析器的任務是把源文件的字元流轉換成記號流。本質上它查看連續的字元然後把它們識別為「單詞」。 2. 語法分析 語法分析器根據語法規則識別出記號流中的結構(短語、句子),並構造一棵能夠正確反映該結構的語法樹。 3. 語義分析 語義分析器根據語義規則對語法樹中的語法單元進行靜態語義檢查,如果類型檢查和轉換等,其目的在於保證語法正確的結構在語義上也是合法的。 4. 中間代碼生成 中間代碼生成器根據語義分析器的輸出生成中間代碼。中間代碼可以有若干種形式,它們的共同特徵是與具體機器無關。最常用的一種中間代碼是三地址碼,它的一種實現方式是四元式。三地址碼的優點是便於閱讀、便於優化。 5. 中間代碼優化 優化是編譯器的一個重要組成部分,由於編譯器將源程序翻譯成中間代碼的工作是機械的、按固定模式進行的,因此,生成的中間代碼往往在時間和空間上有很大浪費。當需要生成高效目標代碼時,就必須進行優化。 6. 目標代碼生成 目標代碼生成是編譯器的最後一個階段。在生成目標代碼時要考慮以下幾個問題:計算機的系統結構、指令系統、寄存器的分配以及內存的組織等。編譯器生成的目標程序代碼可以有多種形式:匯編語言、可重定位二進制代碼、內存形式。 7 符號表管理 符號表的作用是記錄源程序中符號的必要信息,並加以合理組織,從而在編譯器的各個階段能對它們進行快速、准確的查找和操作。符號表中的某些內容甚至要保留到程序的運行階段。 8 出錯處理用戶編寫的源程序中往往會有一些錯誤,可分為靜態錯誤和動態錯誤兩類。所謂動態錯誤,是指源程序中的邏輯錯誤,它們發生在程序運行的時候,也被稱作動態語義錯誤,如變數取值為零時作為除數,數組元素引用時下標出界等。靜態錯誤又可分為語法錯誤和靜態語義錯誤。語法錯誤是指有關語言結構上的錯誤,如單詞拼寫錯、表達式中缺少操作數、begin和end不匹配等。靜態語義錯誤是指分析源程序時可以發現的語言意義上的錯誤,如加法的兩個操作數中一個是整型變數名,而另一個是數組名等。

4. 請問一個編譯器的問題,int a = 3

一樓的回答有點問題,int a=3;並不是有兩個地址,而是只有一個地址,在定義時系統會分配一塊內存裡面存的值是3,當用a時就是調用這塊內存里的值,當你創建一個指針類型的時候才是先開一塊內存存儲存儲這個數字3,然後再開一塊內存用來存儲3所在的內存的地址給這個指針變數,這時指針變數當int型使用時返回的顯示的是3的地址,就是一串看似亂碼的數字,用*a再取就是取指針對應的那塊內存中的值

熱點內容
sql創建鏈接 發布:2025-07-08 00:08:38 瀏覽:396
ftp上傳中斷 發布:2025-07-08 00:08:37 瀏覽:639
linux雲計算課程 發布:2025-07-08 00:07:23 瀏覽:21
安卓網易雲怎麼發布歌曲 發布:2025-07-07 23:42:29 瀏覽:625
安卓內存讀取腳本 發布:2025-07-07 23:42:19 瀏覽:870
python27漢化 發布:2025-07-07 23:42:18 瀏覽:720
源碼鎖屏 發布:2025-07-07 23:26:52 瀏覽:941
手機版編程軟體 發布:2025-07-07 22:57:22 瀏覽:121
linux下執行sh腳本 發布:2025-07-07 22:49:00 瀏覽:127
雲盤怎麼存儲資料 發布:2025-07-07 22:49:00 瀏覽:915