【发布时间】:2016-10-15 08:27:07
【问题描述】:
我开始学习非常基本的汇编语言,我了解到编译后的代码进入一个名为Code Segment 的特殊段,它(至少在现代架构中)是一个写保护段。
但一个问题突然出现:在某些编程语言中(即:EcmaScript、Python 等)有一个神奇的eval() 函数,它接受一个字符串,解析它然后执行它。
由于代码在运行时被评估(然后在填充代码段之后)并且代码段被写保护,它会执行什么样的魔法?
我认为它与 JIT 编译有关,但没有关于它在低级别如何工作的线索。
【问题讨论】:
-
python 被解释(除非使用 pypi,但即使在那里你也可以动态调用解释器)。所以
eval只是使用内置解释器计算表达式。这在汇编或编译语言中是不可能的。 -
不,看我的编辑。解释的代码是……解释的!字节码系统可以节省解析时间,但这是同一件事:解释。 JIT 在非只读段中即时生成本机代码,但您无法轻松访问该段(就像在 C 中一样),因此它相当安全。