[请益] 想不通直译器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