㈠ 怎麼查看編譯後的機器代碼
如果單單是看機器碼,可以用dos進入程序所在目錄,然後裝載程序(假設為jmp.exe),使用debug裝載:debug jmp.exe 然後使用u命令查看,相關參考debug命令,阿門。。。
㈡ java程序編譯後會產生位元組碼還是機器碼
Java編譯後是位元組碼,C/C++以前全都是是機器碼。
電腦只能運行機器碼。Java在運行的時候把位元組碼變成機器碼。
C/C++在編譯的時候直接編譯成機器碼。
不過現在微軟的Visual Studio C++ 2005以後的C++也可以編譯成位元組碼,用CLR運行是轉換成機器碼(和Java差不多)。
㈢ LINUX怎麼編譯本地機器碼
請先去看看 Linux 相關基礎。
Linux 其實總的來說,全都是第三方函數庫,根本就沒有官方函數庫。
為啥?因為 Linux 就是一個內核,所有的函數庫,程序都是運行在內核上的程序,都是可以換的。
㈣ 將下列程序代碼手工編譯為用十六進制數表示的機器碼.(可查51指令碼表),什麼是十六進製表示的機器碼
5:LJMPMAIN
6:ORG0030H
7:MAIN:
C:0x0000020030LJMPMAIN(C:0030)
C:0x000300NOP
C:0x000400NOP
C:0x000500NOP
C:0x000600NOP
C:0x000700NOP
C:0x000800NOP
C:0x000900NOP
C:0x000A00NOP
C:0x000B00NOP
C:0x000C00NOP
C:0x000D00NOP
C:0x000E00NOP
C:0x000F00NOP
C:0x001000NOP
C:0x001100NOP
C:0x001200NOP
C:0x001300NOP
C:0x001400NOP
C:0x001500NOP
C:0x001600NOP
C:0x001700NOP
C:0x001800NOP
C:0x001900NOP
C:0x001A00NOP
C:0x001B00NOP
C:0x001C00NOP
C:0x001D00NOP
C:0x001E00NOP
C:0x001F00NOP
C:0x002000NOP
C:0x002100NOP
C:0x002200NOP
C:0x002300NOP
C:0x002400NOP
C:0x002500NOP
C:0x002600NOP
C:0x002700NOP
C:0x002800NOP
C:0x002900NOP
C:0x002A00NOP
C:0x002B00NOP
C:0x002C00NOP
C:0x002D00NOP
C:0x002E00NOP
C:0x002F00NOP
8:MOVA,BCD1
C:0x0030E530MOVA,0x30
9:ADDA,BCD2
C:0x00322540ADDA,0x40
10:DAA
C:0x0034D4DAA
11:MOVBCD1,A
C:0x0035F530MOV0x30,A
12:MOVA,BCD1+1
C:0x0037E531MOVA,0x31
13:ADDCA,BCD2+1
C:0x00393541ADDCA,0x41
14:DAA
C:0x003BD4DAA
15:MOVBCD1+1,A
C:0x003CF531MOV0x31,A
16:SJMP$
C:0x003E80FESJMPC:003E
C:0x004000NOP
㈤ 請問高級語言為什麼不直接編譯成機器碼,而編譯成匯編代碼
2.Que:? ACK:1)其中有一個好處是方便優化,因為,編譯器也是工具,也是機器,畢竟是機器生成的程序,不可以非常 完美的,而匯編是機器指令的助記符,一個匯編指令就對應一條機器指令(特殊指令除外)調試起來肯定會比 機器指令方便的方便,這樣優化起來也方便。 2)高級語言只需要編譯成匯編代碼就可以了,匯編代碼到機器碼的轉換是由硬體實現即可,有必要用軟體實 現這樣分層可以有效地減弱編譯器編寫的復雜性,提高了效率.就像網路通訊的實現需要分成很多層一樣,主要 目的就是為了從人腦可分析的粒度來減弱復雜性. 3)如果把高級語言的源代碼直接編譯成機器碼的話,那要做高級語言到機器碼之間的映射,如果這樣做的 話,每個寫編譯器的都必須熟練機器碼。這個不是在做重復勞動么。
㈥ C語言代碼編譯成的是機器碼,那麼怎麼實現可移植性呢
C語言寫的代碼編譯成了機器碼,與編譯器有關,與當前的電腦的CPU沒有關系
有個概念叫交叉編譯,我們做嵌入式的,就靠這個工作了
也就是在PC上編譯的機器碼,下載到其他的晶元裡面,讓它在這個晶元里運行
只要其他的電腦也支持同樣的編譯器產生的機器碼,就可以一致到它上面
㈦ 編譯時選擇機器碼,能反編譯出來嗎
可以說絕大部分的程序是不能反編譯的,因為同樣的機器碼,可以由多種不同的高級語言的程序代碼生成,所謂殊途同歸,不管外表看起來多麼不同的代碼,編譯後生成的機器碼也可能完全一樣的
㈧ C語言編譯到機器碼的過程求詳細解說,不勝感激
從編碼到生成可執行的binary文件是有好幾個過程的:(默認已完成編碼)
1, 預編譯(預處理), 也就是替換工作, 先把代碼中的宏做替換, 條件編譯等會做處理,為編譯做作準備;
2,編譯,包括了語法的檢查,匯編代碼等中間代碼的生成,代碼優化,obj文件(也算是目標代碼)的生成,已經是有機器碼了;
3.庫的合成,這個不一定有,不是必須的;
4.鏈接, 連接器會按照一定的規則,比如根據連接腳步,把code組織起來,生成elf文件(elf可能不是一個所有通用的格式),這個時候已經可以執行了,裡面的可以執行的機器碼;
5,裁剪, 可以把elf文件中的非必需的段 strip,生成一個更精簡的elf文件;
6,binary的生成,obj命令可以把elf文件轉換成binary文件,binary文件燒錄到存儲器中可以直擊運行。
㈨ 請問c語言的源程序被編譯後的代碼是機器碼嗎
首先語言和被編譯成的代碼沒有直接關系。有把Java編譯成機器碼的編譯器也有把C語言編譯成Java位元組碼的編譯器。
機器碼只是CPU直接認讀的編碼,不等於和硬體打交道的。操作硬體是你通過程序操作CPU做到的。操作系統只不過是別人寫的程序而已,說到底還是程序。
㈩ 編程軟體將源代碼編譯成機器碼是的過程編譯器、鏈接器等等。
這個問題太復雜了
建議兄弟好好學習一下《編譯原理》和《操作系統》吧