源程式碼 VS 彙編程式碼 VS 目標程式碼 VS 位元組碼 VS 機器碼

 

 

1、源程式碼(source code)

 

源程式碼就是平時我們開發的程式碼;比如C、Java、Python、Shell…等

public class HelloWorld {
    public static void main(String []args) {
       System.out.println("Hello World");
    }
}

 

 

2、彙編程式碼(Assembly code)

 

彙編語言也是人看的懂的語言,也是源碼

#hello.s 
.data                    # 數據段聲明
        msg : .string "Hello, world!\\n" # 要輸出的字元串
        len = . - msg                   # 字串長度
.text                    # 程式碼段聲明
.global _start           # 指定入口函數

_start:                  # 在螢幕上顯示一個字元串
        movl $len, %edx  # 參數三:字元串長度
        movl $msg, %ecx  # 參數二:要顯示的字元串
        movl $1, %ebx    # 參數一:文件描述符(stdout) 
        movl $4, %eax    # 系統調用號(sys_write) 
        int  $0x80       # 調用內核功能

                         # 退出程式
        movl $0,%ebx     # 參數一:退出程式碼
        movl $1,%eax     # 系統調用號(sys_exit) 
        int  $0x80       # 調用內核功能

 

 

3、目標程式碼(object code)

目標程式碼是由編譯器或其他轉換器生成的程式碼,包括機器碼、位元組碼等

 

4、位元組碼(Bytecode)

位元組碼是由編譯器生成的中間語言,生成中間語言後由運行時環境解釋或即時編譯。它通常不是人類可讀的語言,也不代表在任何現有CPU硬體上直接執行的實際機器語言。
 

 

 

       

5、可執行文件(Excuteable file)

鏈接過程的產物。它們是可以由CPU直接執行的機器碼。

 

6、庫文件(Library file)

可能很多地方要用到這個,生成庫文件,方便多個地方使用。