把組合語言編制的源程式變為目標程式,要經過哪些步驟

時間 2021-08-14 23:02:28

1樓:淘汰

詞法分析:

詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程式進行掃描,產生一個個的單詞符號,把作為字串的源程式改造成為單詞符號串的中間程式。執行詞法分析的程式稱為詞法分析程式或掃描器。

源程式中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那麼對這個單詞符號,種別編碼就完全代表它自身的值了。

若一個種別含有許多個單詞符號,那麼,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。

詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。

語法分析:

編譯程式的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表示式、賦值、迴圈等,最後看是否構成一個符合要求的程式,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程式是最終的一個語法單位。編譯程式的語法規則可用上下文無關文法來刻畫。

語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發,向下推導,推出句子。

而自下而上分析法採用的是移進歸約法,基本思想是:用一個寄存符號的先進後出棧,把輸入符號一個一個地移進棧裡,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號。

中間**:

中間**是源程式的一種內部表示,或稱中間語言。中間**的作用是可使編譯程式的結構在邏輯上更為簡單明確,特別是可使目標**的優化比較容易實現中間**,即為中間語言程式,中間語言的複雜性介於源程式語言和機器語言之間。中間語言有多種形式,常見的有逆波蘭記號、四元式、三元式和樹。

2樓:

正確答案: a、彙編

彙編,是將組合語言源程式翻譯成機器目標**的過程。

解釋,是將高階語言的源程式逐句翻譯成機器語言並逐句執行的過程。

編輯,是指修改內容

編譯,是將高階語言的源程式以檔案為單位整體翻譯成另一種語言(一般是低階語言,如組合語言或機器語言)的等價程式的過程。

1. 把組合語言編制的源程式變為目標程式,要經過(

3樓:

正確答案: a、彙編

彙編,是將組合語言源程式翻譯成機器目標**的過程。

解釋,是將高階語言的源程式逐句翻譯成機器語言並逐句執行的過程。

編輯,是指修改內容

編譯,是將高階語言的源程式以檔案為單位整體翻譯成另一種語言(一般是低階語言,如組合語言或機器語言)的等價程式的過程。

4樓:匿名使用者

d----編譯

編譯生成hex目標檔案

用組合語言編寫延時1S的子程式,用組合語言編寫乙個延時1S的子程式

湯旺河邊 本程式通過編譯,執行正確 code segment assume cs code,ds code subroutine 延時指定的時鐘嘀嗒數 入口 didas 時鐘嘀嗒數 1秒鐘約嘀嗒18.2次,10秒鐘嘀嗒182次。若延時不是秒的10數次倍,誤差稍微大點 delay1s proc nea...

彙編 延時子程式,組合語言中延時子程式的問題

daily proc near mov cx,2000h d0 mov ax,0ffffh d1 dec ax jz d1 loop d0 daily endp 延時大概是0.33s 其實延時跟cpu有很大關係,不能用軟體精確計算,可以用8254實現,硬體和軟體功能具有邏輯上的等效性。 用delay...

能將高階語言編寫的源程式轉換為目標程式的是什麼

來自大雲山漂亮的黑鳶 編譯程式 和 解釋程式 雖然做事方式上有很大差別,但是做的事都是將源程式轉換成目標程式,只不過編譯是編譯一次,只要源程式無變化,就無須再次編譯,編譯得到內容永遠留下來了。解釋雖然內容不會留下來,但是每次執行都進行翻譯,所以根據你的題意,轉換為目標程式的 兩者都是。 c 編譯程式...