Soft_Job 板


LINE

※ 引述《dragoncfe168 (梅長蘇)》之銘言: : 請問一下 : 為何直譯器將source code轉譯成機器碼, : 不會產生不同電腦的機器語言不同 而無法執行的問題??? 直譯器並不是轉成機械碼, 而是直接執行運算。 例如: 1+2 直譯器在發現是執行 加法時, 就會用寫該直譯器的語言完成 1+2 的結果。 如果是用 c 寫的, 就會執行 add_fun(1,2), 然後得到 3。 : 反觀同樣把source code轉譯成機器碼的編譯器 : 卻會有此類問題呢??? 而編譯器並不是直接轉成機械碼, 而是組合語言, add 1,2 但是一直到最後的執行檔, 都不是編譯器做的。 組譯器把 add 1,2 變成 機械碼, 還有某種格式的執行檔, 這就是不能執行的原因之一, 是的有之一, 還有其他條件會造成 這個執行檔無法在其他平台執行的原因, 不過不同的 執行檔格式算是比較容易解釋的一個原因。 -- 紙上得來終覺淺,絕知此事要躬行。 --
QR Code



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.86.24
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1525792354.A.F02.html
1F:推 jojojen: 看完這篇發現我的觀念可能也有點不清楚 請問所謂"直接執 05/09 00:27
2F:→ jojojen: 行運算"不是還是要轉成機器碼讓cpu執行嗎?不好意思,問 05/09 00:27
3F:→ jojojen: 題可能有點基本,但我不太懂為何沒有轉成機器碼,再麻煩 05/09 00:27
4F:→ jojojen: 您了 05/09 00:27
如果給你一個 1 + 2 這樣的輸入字串, 你能不能寫一個程式, 算出 3? 直譯器就是在做這樣的事情。 你可以想成每個平台都有的計算機, 這個計算機都可以把 1+2 算出來。 但是你寫的 1+2 程式, 被該平台的編譯器/組譯器產生執行檔案之後, 只能在該平台執行。 例如: 用 vs 編譯產生的 1+2 這個程式, 並無法在 mac osX 上執行。
5F:推 dragoncfe168: 我暈了!!好像越搞越複雜,現在更迷惘了。 05/09 00:50
6F:→ dragoncfe168: 書上只提到jvm將程式轉譯成bytecode 要執行時再由 05/09 00:52
7F:→ dragoncfe168: jvm以直譯方式,將byte code轉譯成機器碼讓真正的 05/09 00:53
8F:→ dragoncfe168: 電腦去執行之!!! 05/09 00:53
9F:推 dragoncfe168: ---莫非上所謂"直譯"方式,並不是指jvm的直譯器?! 05/09 01:00
10F:→ dragoncfe168: 上述 05/09 01:01
我的說明並沒有包含這種轉 byte code 的做法, 這種作法又稍微複雜了一點。
11F:→ bcew: 用pseudo組語來簡單解釋好了,a=1; b=2; c=a+b;在編譯後的 05/09 05:45
12F:→ bcew: 結果是mov r0, 1; mov r1, 2; add r0, r1;st [c], r0; 直譯 05/09 05:45
13F:→ bcew: 器要執行上面可能走過的組語是push r0; push r1; mov r0, 1; 05/09 05:45
14F:→ bcew: mov r1, 2; bl add_func; st [c], r0; pop r1; pop r0; 在a 05/09 05:45
15F:→ bcew: dd_func可能還有一堆錯誤檢查的組語,最後才有add r0, r1, 05/09 05:45
16F:→ bcew: 但這些在編譯器編譯時就做掉,輸出的組語就只有一個加法指令 05/09 05:45
17F:→ bcew: 很簡潔 05/09 05:45
18F:推 lturtsamuel: 你就想像你用c語言寫一個計算機 這樣的計算機難道是" 05/09 09:17
19F:→ lturtsamuel: 先把算式轉換成機器碼"再執行嗎? 05/09 09:17
20F:推 lturtsamuel: 當然如果要談到優化的話可能會用上機器碼 不過直譯器 05/09 09:20
21F:→ lturtsamuel: 在設計上就是要把這件事抽象掉 05/09 09:20
22F:推 jojojen: 我應該懂了 所以直譯器只有做到轉換成該語言用的function 05/09 09:38
23F:→ jojojen: 的地步而已 謝謝各位大大 05/09 09:38
24F:→ srwhite: 我之前好像也誤解了 感謝大大 05/09 09:58
※ 編輯: descent (101.10.86.24), 05/09/2018 10:45:34







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP