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