編譯器匯編器
Ⅰ 程序的編譯匯編
如何被編譯的呢?
其實計算機只能識別和執行的就是0.1
編譯出來的的也都是機器碼 既0或1
怎麼是操作系統呢 他是根據cpu而編譯的
不同的CPU 都有不同的指令集
所以不同的cpu 就要選用不同的 編譯器了
編譯器本身又是程序,操作系統的運行又是靠什麼編譯的呢?
操作系統是已經被編譯好的 程序 而編譯器是運行在已經編譯好的操作系統上的·
怎麼說呢其實 以前沒有編譯器 都是手工匯編
就是人自己把 匯編語言轉變成 2進制的可執行文件
後來程序越來越大 手工匯編 出錯的幾率也越來越大
所以有了編譯器·
硬體上的匯編器和
硬體上沒有匯編器 都是人自己寫的
編譯器上的匯編器什麼關系?
編譯器的匯編器是把 高級語言轉成 計算機可執行的文件!即1.0
Ⅱ 匯編編譯器的工作和生成可執行文件的執行過程是怎樣的
匯編器,先生成目標代碼,其中有一些數據,代碼,還有一些表(重定位表等)
然後調用鏈接器,鏈接成可執行文件。
早期的匯編器,只負責生成目標代碼,鏈接器是一個獨立的程序。
需要手工分別作匯編,和鏈接
現在的匯編器,可以合並這兩步,直接調用鏈接器,是直接生成可執行文件。
偽指令是匯編命令,是用來操作匯編器的命令。
不是指令,不生成對應的代碼。
CPU只能識別二進制代碼,數據通過載入器的載入,或者燒寫器的燒寫,初始化,有些代碼,會在載入時重新定位。
代碼也可能是燒寫的,比如BIOS代碼。
對於PC:
操作系統的啟動代碼,是由BIOS中的專門代碼;
從磁碟的固定位置,載入在內存的固定位置的。
操作系統的其他部分,是由操作系統的啟動代碼載入的。
Ⅲ 匯編編譯器工作原理
首先這個一一對應的關系是確定的
其次匯編編譯就是簡單對應和少量計算,就是查一個特別大的表而已
具體可以了解一下編譯原理(這是個大坑,慎入)
Ⅳ C編譯器一般包括匯編器嗎
樓主把概念搞混了,匯編器(比如MASM)全稱是匯編編譯器,用來編譯匯編語言的。我想在一般的程序中,是用譽衫來編譯內嵌的匯編碼的。
匯編慶喚腔語言的大部分命令都和機器碼一一對應,
而高級語言和匯編的偽指令是不和機器碼一一對應的
(也許高級語言一句會轉換為N句機器碼)。
因此從某種意義上說,匯編碼就相當於機器碼。
創造匯編只不過是看著舒服點而已,
要不然輸入的指令只能由0或1構成,
和這些東西打交道會多麻煩啊。
編譯器的作用是,將源文件(.c/.cpp/.pas等)轉換為目鏈罩標代碼(.obj/.dcu等)。這是已經是二進制代碼了。
最後又連接器(Linker),將目標代碼連接起來,
這樣才形成了可執行文件
Ⅳ 匯編器和編譯器有什麼區別
匯編器(Assembler)是將匯編語言翻譯為機器語言的程序。一般而言,匯編生成的是目標代碼,需要經鏈接器(Linker)生成可執行代碼才可以執行。
匯編語言是一種以處理器指令系統為基礎的低級語言,採用助記符表達指令操作碼,採用標識符表示指令操作數。作為一門語言,對應於高級語言的編譯器,需要一個「匯編器」來把匯編語言原文件匯編成機器可執行的代碼。常用的高級語言編譯器有Microsoft公司的MASM系列和Borland公司的TASM系列編譯器,還有一些小公司推出的或者免費的匯編軟體包等。
編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器(Linker) → 可執行程序 (executables)
高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言,而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)
Ⅵ 匯編語言的編譯器是用什麼寫的呢
匯編編譯器:把匯編語言源程序轉換為機器語言的程序,匯編編譯器也可以生成源代碼列表文件,其中包括行號,內存地址,源代碼語句,程序中使用的符號及變數,交叉引用列表.
在Windows/Dos 下可用的匯編編譯器有Microsoft宏匯編編譯器MASM,Borland Turbo Assember(TASM)和The NetWide Assembler(NASM),其中NASM是跨平台的編譯器可用於Windows/Dos/Linux下.他們的語法相近,都是Intel語法風格. 在Linux下可用的匯編編譯器有NASM,gas.NASM和gas的語法風格相去甚遠,NASM使用的是Intel 語法風格的匯編語法,而gas使用的是AT&T的匯編語法風格.
Ⅶ 編譯器或匯編器都能產生目標代碼嗎
編譯器或匯編器都能產生目標代碼
區別是
編譯器一般是中高級語言,它鄭山更接近人類的語言,方便羨叢消編程
而
匯編器只是助記符,它是低級語兄知言,對編程者要求高,但能編寫出高效率的程序
Ⅷ 匯編器和編譯器有什麼區別WINDOWS操作系統中是否包含這
匯編和編譯是兩個完全不同的概念.
匯編是指用匯編語言直接操縱機器,用匯編語言編的程序是不需要編譯器進行編譯的
編譯是指把高級語言編的程序翻譯成機器語言好讓機器執行,不同的高級語言有不同的編譯器
樓主可以看看<<匯編語言>>和<<編譯原理>>這兩本書就明白了