看板 Soft_Job 關於我們 聯絡資訊
請問一下 為何直譯器將source code轉譯成機器碼, 不會產生不同電腦的機器語言不同 而無法執行的問題??? 反觀同樣把source code轉譯成機器碼的編譯器 卻會有此類問題呢??? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.242.107 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1525782413.A.89A.html ※ 編輯: dragoncfe168 (220.134.242.107), 05/08/2018 20:28:21
abccbaandy: 因為前者轉譯的時間點是執行時阿幹 05/08 20:32
dragoncfe168: 不懂耶 不管執不執行 機器碼難道會有兩種標準? 05/08 20:38
jojojen: 同樣的指令在不同機器上是不同的機器碼 05/08 20:40
Ekmund: 不懂你的問題 你是遇到什麼狀況? 05/08 20:41
dragoncfe168: 難道同樣的指令在直譯器與編譯器上是兩套標準?? 05/08 20:41
dragoncfe168: 我的問題是編譯器會受制於機器語言 為何直譯器不會? 05/08 20:43
dragoncfe168: 為何直譯器不管任何機器語言都可以run?? 05/08 20:44
a0919610611: 直譯器本身也是binary阿,怎麼不會 05/08 20:46
jojojen: 某程式指令用機器a的語言表示是0000;用機器b可能是0010; 05/08 20:51
jojojen: 所以機器a編譯好機器b是看不懂的,直譯器是執行時才決定 05/08 20:51
jojojen: 用0000還是0010 05/08 20:51
bcew: 直譯器是讀程式碼執行,不是編機械碼 05/08 21:24
alan3100: 你在a機器裝b直譯器也不能跑呀 05/08 21:27
alog: 去拿現成程式語言去研究他的設計不是更快 05/08 21:37
alog: 書上講的只是大概的概念而已 硬著頭皮吸收你也不明白人家怎 05/08 21:38
alog: 麼幹 05/08 21:38
final01: 多看點書... 05/08 21:54
visualcshape: 不同平台要用對應的直譯器 05/08 22:02
s310143: 請去看LLVM相關說明在問吧 05/08 22:19
yupog2003: 編譯器就像你都不知道眼前這個人懂什麼語言就開始把腦 05/08 22:48
yupog2003: 中的概念轉換成某個語言講給他聽,假設是中文好了 05/08 22:48
yupog2003: 萬一他不會中文就GG了,直譯器則是當你知道他只會講英 05/08 22:49
yupog2003: 文的時候才把腦袋中想講的東西翻成英文講給他聽 05/08 22:49
yupog2003: 萬一你不會講英文那也是GG,所以直譯器也是會有同樣的 05/08 22:49
yupog2003: 問題拉 05/08 22:49
bill0205: 程式語言就只是給人類看的 編譯器就是把人類看的語言轉 05/08 22:52
bill0205: 成機器看得懂的語言 但是每種機器懂的語言不同 05/08 22:52
bill0205: 所以編譯器就自動轉成相對應的機器馬 05/08 22:52
y3k: 呃這...多看點書+1 05/09 00:07
dreamnook: 直譯器: 一份英文稿 交給日本人跟台灣人翻 05/09 09:13
dreamnook: 編譯器: 一份英文稿 米果人翻好 給日本人跟台灣人看 05/09 09:13
lturtsamuel: 因為直譯器沒有轉機器碼 是直接執行 05/09 09:13
lturtsamuel: 跨平台的問題 直譯器已經幫你做了 不是不用做 05/09 09:14
williamtsai: 不同架構的電腦上的直譯器 binary 不同,所以產生的 05/09 16:07
williamtsai: 指令也不同,每個平台的直譯器都是用那個平臺的 comp 05/09 16:07
williamtsai: iler 編出來的 05/09 16:07
OhNo386: 直譯器語言寫給直譯器看的與系統或平台無關,反之c++編 05/09 19:59
OhNo386: 譯器就是寫給系統看的,就算是win gcc 最後system call 05/09 19:59
OhNo386: 還是呼叫到os,所以才有平台寫法的差別。但go也算是你所 05/09 19:59
OhNo386: 謂直譯器的概念,雖然它是編譯式? 05/09 19:59
s860134: 沒說到點,直譯器說實在就是提供一套 API 介面供你呼叫 05/11 22:43
s860134: 你寫的程式碼能夠跨平台是因為他在不同平台都實做了一套 05/11 22:44
s860134: 相同 API 介面的直譯器,才讓你同份 code 能在不同平台 05/11 22:45
s860134: 上面跑,編譯器只是根據每個平台先編成那個平台專用語言 05/11 22:46
s860134: 像 python 直譯器實做就有 cpython jypthon ironpython 05/11 22:50
s860134: 分別是用 C, java, C# 實做的,但是他們都能看懂一樣 05/11 22:51
s860134: 的語法 05/11 22:52