Soft_Job 板


LINE

※ 引述《dragoncfe168 (梅长苏)》之铭言: : 请问一下 : 为何直译器将source code转译成机器码, : 不会产生不同电脑的机器语言不同 而无法执行的问题??? 直译器并不是转成机械码, 而是直接执行运算。 例如: 1+2 直译器在发现是执行 加法时, 就会用写该直译器的语言完成 1+2 的结果。 如果是用 c 写的, 就会执行 add_fun(1,2), 然後得到 3。 : 反观同样把source code转译成机器码的编译器 : 却会有此类问题呢??? 而编译器并不是直接转成机械码, 而是组合语言, add 1,2 但是一直到最後的执行档, 都不是编译器做的。 组译器把 add 1,2 变成 机械码, 还有某种格式的执行档, 这就是不能执行的原因之一, 是的有之一, 还有其他条件会造成 这个执行档无法在其他平台执行的原因, 不过不同的 执行档格式算是比较容易解释的一个原因。 -- 纸上得来终觉浅,绝知此事要躬行。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.10.86.24
※ 文章网址: https://webptt.com/cn.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灯, 水草

请输入看板名称,例如:e-shopping 或 站内搜寻

TOP