組合語言的編譯器是執行在什麼平台上?

時間 2023-03-09 00:20:06

1樓:匿名使用者

我知道 我了很多問題 都沒回覆 沒意思了 我很失望 不了去看編譯原理就明白了。

好吧那我就告訴你吧。

實際上裸機可以執行任何軟體。

為什麼一定要在作業系統上執行。

就是為了解決應用程式對硬體程式設計的複雜性 所以作業系統提供了程式設計介面 就是系統呼叫 應用程式直接呼叫作業系統的介面要比直接對硬體程式設計簡單的多 著就是作業系統其一的功能。

你想知道彙編器和作業系統 是如何實現的嗎。

我也知道。第乙個彙編器其實 是人工翻譯的 就是看cpu廠家的手冊進行翻譯的 後來就把人工翻譯的過程 用計算機來實現就成了彙編器 第乙個彙編器是人工翻譯成機器語言的 在計算機上執行的功能很有限 用這個功能很有限的彙編器 去編譯乙個功能強大的匯程式設計序 在用這個彙編器去編譯組合語言寫的c語言編譯程式 就這樣慢慢就發展成了今天的非常複雜的編譯器。

作業系統是如何實現的那 我也知道。

沒心情在說了。

2樓:定惠

機器可以識別的是高低電平,將高低電平用 0,1 來對應表達,就是二進位制**。

二進位制**肯定是不便於記憶的,因此,為了便於記憶,將可以執行一項功能的二進位制**段用乙個符號來代替,就產生了組合語言。

那麼彙編的過程,就是將這個符號還原成二進位制**的過程。

這個過程,可以由人工來做,由機器來做。

那麼,我們的電腦上來完成這個過程的,就是傳說中的編譯器。

這個彙編的編譯器是怎麼做成的?是直接用二進位制**0和1寫的嗎?

編譯器本身就是乙個可執行程式。

編寫這個可程式,和編寫通常程式的過程相同,所以隨意用什麼語言來寫。然後再通過編譯,生成可執行程式。

那這個二進位制的0、1是以什麼形式存放的,存放在**?

可執行程式是什麼形式的,取決於作業系統。

存放形式,取決於儲存器的物理性質,可以肯定的是存放在儲存器。

如果用我們的電腦,怎麼輸入這些0、1,讓電腦識別?

用我們的電腦,需要通過輸入裝置來輸入,通常為鍵盤、滑鼠。

過去就像樓上說的,也有用紙帶、撥碼開關或者其他什麼的。

其實我就是想弄明白硬體和軟體是怎麼鍥和的,作業系統這個巨大的軟體可以直接在電腦硬體上執行,那其他軟體為什麼一定要在作業系統上才能執行呢?

其他的軟體不是一定要在作業系統上才能執行。只是,作業系統使軟體的執行不必考慮硬體的差別,也就是說,針對作業系統平台所編寫的程式可以適用於該作業系統可以執行的所有硬體平台,而不必針對每乙個不同的硬體都編寫乙個程式。

是不是要呼叫系統裡面的一些庫檔案啊?如果是,那windows怎麼不需要啊?它怎麼能只憑自己在安裝時所帶的那一套各種各樣的檔案就能在裸機上執行了呢?

windows本身就是作業系統。

3樓:匿名使用者

組合語言的編譯器執行平台是隨著計算機技術的發展而不斷跟進的,最早的編譯器執行在dos平台,後來逐步開始執行在linux、window平台、mac os平台等等,只要在世界上流行起來,使用人數較多的平台都有,這也是市場經濟促使產品滿足各個受眾載體需求的必然結果。

4樓:做而論道

2023年。

intel推出8080微處理器,並被世界首颱商業pc所採用。

zilog公司推出處理器z-80。

第一台商業成功的pc牛郎星8800研製成功。

ibm首次提出計算機精簡指令集。

xerox推出第一台工作站樣機xeroxalto。

在第一屆計算機西洋棋冠軍賽中,俄羅斯程式kaisasa獲勝。

2023年。

比爾·蓋茨和保羅·艾倫為牛郎星開發了世界上第一套標準的微電腦軟體basic,並創辦了microsoft公司。

看到了嗎?2023年:第一台商業成功的pc牛郎星8800研製成功。

2023年:比爾·蓋茨和保羅·艾倫為牛郎星開發了世界上第一套標準的微電腦軟體basic,並創辦了microsoft公司。

如果,沒有比爾·蓋茨和保羅·艾倫,當時的牛郎星只能使用撥動開關,輸入1、0來編寫程式。這個**,在網上,可以找到。

最早的計算機,肯定都是用撥動開關,輸入1、0來編寫程式的,儲存空間是磁帶和穿孔紙帶。

5樓:匿名使用者

是直接用二進位制**0和1寫的嗎?是的,我以前的大學老師上課時跟我們說過,他們那個時候程式設計是拿釘子來釘紙帶! http:

aspx那這個二進位制的0、1是以什麼形式存放的,存放在**?當然是檔案形式了,存放硬碟裡,以前沒有硬碟是放在軟盤裡。最最早的時候軟盤也沒有,就存在不了,硬要說存在的話,就在那紙帶上。

如果用我們的電腦,怎麼輸入這些0、1,讓電腦識別?想用最原始的辦法程式設計,需要很多計算機的知識的基礎的。你要知道與彙編對應的0、1,例如jmp對應什麼,mov對應什麼等等,還有彙編編譯器做出來是的exe檔案,exe檔案其實是pe格式,http:

php?threadid=21932

6樓:

電腦科學有專門講作業系統這門課,這是一門大學問,不是一兩句話可以講清楚的!

什麼是編譯?

7樓:ccc菜辣椒

編譯(compilation , compile) 1、利用編譯程式從源語言編寫的源程式產生目標程式的過程。 2、用編譯程式產生目標程式的動作。 編譯就是把高階語言變成計算機可以識別的2進製語言,計算機只認識1和0,編譯程式把人們熟悉的語言換成2進製的。

編譯程式把乙個源程式翻譯成目標程式的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間**生成;**優化;目標**生成。主要是進行詞法分析和語法分析,又稱為源程式分析,分析過程中發現有語法錯誤,給出提示資訊。

編譯語言是一種以編譯器來實現的程式語言。它不像直譯語言一樣,由直譯器將**一句一句執行,而是以編譯器,先將**編譯為機器碼,再加以執行。理論上,任何程式語言都可以是編譯式,或直譯式的。

它們之間的區別,僅與程式的應用有關。

8樓:匿名使用者

編譯就是敲** 把別人的源**編譯成自己能夠使用的**。

9樓:訾鳳憶槿

就是將一本書編撰一下,重新進行翻譯整理吧!

用什麼樣的組合語言編譯器好

編譯器為什麼會生成組合語言而不是機器語言?

10樓:網友

計算機只能識別二進位制**,所以機器指令是由二進位制**組成的,即你所說的機器語言。所謂組合語言,只是一種符號,用來方便人們使用,否則你看到的都是一串串的01011011之類的資訊,一眼就認出它是什麼指令非常困難,而用組合語言這種符號,一看就知道是什麼指令了。這種符號語言用助記符來表示操作碼,用符號或符號位址來表示運算元或數位址,它與機器指令是一一對應的。

(樓上各位表述的所謂「步驟」論是不確切的)

所以,並不是你說的「生成組合語言而不是機器語言」,生成的是機器語言,你在偵錯程式或反匯程式設計序中看到的組合語言**只是由反匯程式設計序把機器指令翻譯成你看得懂的符號--組合語言--而已。(比如你在od或ida中可以看到每行彙編指令前面都有機器碼,如push ebp的機器碼是55h,單看55,你不是熟手的話可能還不知道它是什麼指令,後面給你顯示出符號"push ebp",你一下子就明白了,這就是一一對應的關係,連"55"都是為了讓你看的方便,否則應是01010101,即8個電子元件的電源開、關狀態)

同樣的道理,你在十六進製製器(如winhex、hexworkshop等軟體)中看到的是十六進製制每行16位元組排列的,那也是經過把二進位制**每位元組轉換成十六進製制顯示給你看的。

關於平台問題,當然會有影響,不同的cpu有不同的指令系統,就連同一廠家的cpu指令系統都不同,比如intel公司的cpu,從最早的到現在的,指令不斷增多,什麼mmx、sse等等新指令集不斷出現,更不要說不同廠家的cpu了。當然它們之間也有很多相容的指令集。

11樓:水煮冰欺凌

c c++ 先生成彙編 obj 再通過彙編 生成對應的機器碼。

12樓:網友

不涉及多平台。您問的問題本身就是不正確的,編譯器最後生成的就是機器語言。生成組合語言只是乙個步驟,生成了組合語言之後,組合語言與機器指令一一對應,生成機器語言十分容易。

編譯的過程分為詞法分析,語法分析,語義分析,語法制導的翻譯,中間**生成等,要一步一步的來。建議你去看看《編譯原理》

任何高階語言都是編譯成彙編**然後執行的嗎?

13樓:匿名使用者

計算機只認識二進位制編碼 ok?

組合語言執行環境是什麼 **等

14樓:藏風之處

問組合語言的執行環境首先就要問組合語言是什麼東西。

組合語言是機器指令的助記符。

機器指令是由cpu直接處理的計算機語言,那麼彙編首先就確定機器的cpu型號。

比如arm那麼arm系列的處理器就需要使用arm的指令集,所以arm組合語言就不同與inte彙編。

由比如8086系列的處理器,那麼這個組合語言又不同於arm系列。

所以說組合語言的存在必須由處理器定義。

在處理器和指令集已確定的情況下,組合語言通過編譯產生的指令就可以直接由cpu處理了。

這時,所謂的組合語言執行環境的意思又不同了,此時的執行環境就表示cpu內部的結構,定址的方式,積存器的大小,段的定義。等等/.

至於windows下的組合語言所代表的環境就已經確定了cpu指令集,cpu型號,處理器設定等。

15樓:小菊坂胡蝶

組合語言只是一種程式語言而已,你問執行壞境是不是有點莫名其妙啊?!

什麼是編譯器,常見的C語言編譯器是什麼?

什麼是計算機程式設計中的編譯器 常見的c語言編譯器是什麼?常見的細菸都是用在程式設計序的 c語言是一種結構化語言。它層次清晰,便於按模組化方式組織程式,易於除錯和維護。c語言的表現能力和處理能力極強。它不僅具有豐富的運算子和資料型別,便於實現各類複雜的資料結構。它還可以直接訪問記憶體的實體地址,進行...

vc 6 0編譯器是如何編譯c語言程式的

例子 include void main 是一條語句一條語句的翻譯 一個編譯器包括詞法分析 語法分析 語義分析 中間 的生成 目標 的生成 優化等 其中詞法分析的功能是將一個 c檔案讀到記憶體中,然後根據這一大串字串判斷並分割出關鍵字 字母 識別符號等等 語法分析的功能是根據標準c語言的語法判斷這個...

什麼是組合語言!例子,舉幾個最簡單的組合語言例子

組合語言是一種低階語言,不過並不好學,據說要學好組合語言比學資料結構還難。不過再學校學的淺,挺容易的 組合語言是一種低階語言,我們正在學 寰宇飛 組合語言 assembly language 是面向機器的程式設計語言。在彙編語閤中,用助記符 memoni 代替操作碼,用地址符號 symbol 或標號...