[請益] 想不通直譯器vs編譯器vs機器碼的問題

作者: dragoncfe168 (梅長蘇)   2018-05-08 20:26:49
請問一下
為何直譯器將source code轉譯成機器碼,
不會產生不同電腦的機器語言不同 而無法執行的問題???
反觀同樣把source code轉譯成機器碼的編譯器
卻會有此類問題呢???
作者: abccbaandy (敏)   2018-05-08 20:32:00
因為前者轉譯的時間點是執行時阿幹
作者: dragoncfe168 (梅長蘇)   2018-05-08 20:38:00
不懂耶 不管執不執行 機器碼難道會有兩種標準?
作者: jojojen (JJJ)   2018-05-08 20:40:00
同樣的指令在不同機器上是不同的機器碼
作者: Ekmund (是一隻小叔)   2018-05-08 20:41:00
不懂你的問題 你是遇到什麼狀況?
作者: dragoncfe168 (梅長蘇)   2018-05-08 20:41:00
難道同樣的指令在直譯器與編譯器上是兩套標準??我的問題是編譯器會受制於機器語言 為何直譯器不會?為何直譯器不管任何機器語言都可以run??
作者: a0919610611 (熾)   2018-05-08 20:46:00
直譯器本身也是binary阿,怎麼不會
作者: jojojen (JJJ)   2018-05-08 20:51:00
某程式指令用機器a的語言表示是0000;用機器b可能是0010;所以機器a編譯好機器b是看不懂的,直譯器是執行時才決定用0000還是0010
作者: bcew (bcew)   2018-05-08 21:24:00
直譯器是讀程式碼執行,不是編機械碼
作者: alan3100 (BOSS)   2018-05-08 21:27:00
你在a機器裝b直譯器也不能跑呀
作者: alog (A肉哥)   2018-05-08 21:37:00
去拿現成程式語言去研究他的設計不是更快書上講的只是大概的概念而已 硬著頭皮吸收你也不明白人家怎麼幹
作者: final01 (牛頓運動定律)   2018-05-08 21:54:00
多看點書...
作者: visualcshape (Vodalok)   2018-05-08 22:02:00
不同平台要用對應的直譯器
作者: s310143 (Mike)   2018-05-08 22:19:00
請去看LLVM相關說明在問吧
作者: yupog2003 (屁股)   2018-05-08 22:48:00
編譯器就像你都不知道眼前這個人懂什麼語言就開始把腦中的概念轉換成某個語言講給他聽,假設是中文好了萬一他不會中文就GG了,直譯器則是當你知道他只會講英文的時候才把腦袋中想講的東西翻成英文講給他聽萬一你不會講英文那也是GG,所以直譯器也是會有同樣的問題拉
作者: bill0205 (善良的小孩沒人愛)   2018-05-08 22:52:00
程式語言就只是給人類看的 編譯器就是把人類看的語言轉成機器看得懂的語言 但是每種機器懂的語言不同所以編譯器就自動轉成相對應的機器馬
作者: y3k (激流を制するは静水)   2018-05-09 00:07:00
呃這...多看點書+1
作者: dreamnook (亞龍)   2018-05-09 09:13:00
直譯器: 一份英文稿 交給日本人跟台灣人翻編譯器: 一份英文稿 米果人翻好 給日本人跟台灣人看
作者: lturtsamuel (港都都教授)   2018-05-09 09:13:00
因為直譯器沒有轉機器碼 是直接執行跨平台的問題 直譯器已經幫你做了 不是不用做
作者: williamtsai (William Tsai)   2018-05-09 16:07:00
不同架構的電腦上的直譯器 binary 不同,所以產生的指令也不同,每個平台的直譯器都是用那個平臺的 compiler 編出來的
作者: OhNo386 (OhNo386)   2018-05-09 19:59:00
直譯器語言寫給直譯器看的與系統或平台無關,反之c++編譯器就是寫給系統看的,就算是win gcc 最後system call還是呼叫到os,所以才有平台寫法的差別。但go也算是你所謂直譯器的概念,雖然它是編譯式?
作者: s860134 (s860134)   2018-05-11 22:43:00
沒說到點,直譯器說實在就是提供一套 API 介面供你呼叫你寫的程式碼能夠跨平台是因為他在不同平台都實做了一套相同 API 介面的直譯器,才讓你同份 code 能在不同平台上面跑,編譯器只是根據每個平台先編成那個平台專用語言像 python 直譯器實做就有 cpython jypthon ironpython分別是用 C, java, C# 實做的,但是他們都能看懂一樣的語法

Links booklink

Contact Us: admin [ a t ] ucptt.com