假设我有一个特殊的var:
(defvar x 20)
Run Code Online (Sandbox Code Playgroud)
然后我做以下事情:
(let ((x 1)) (eval '(+ x 1))
Run Code Online (Sandbox Code Playgroud)
评估为2.
根据CLHS,eval"评估当前动态环境和零词汇环境中的形式".所以,我希望得到21而不是2.
我错过了什么吗?
现在,如果我没有符号y的动态绑定,则进行评估
(let ((y 1)) (eval '(+ y 1))
Run Code Online (Sandbox Code Playgroud)
我得到条件:"变量Y是未绑定的",这是有道理的,因为y没有动态绑定.
注意:我使用的是SBCL 1.0.57
提前感谢您的帮助!
我正在查看英特尔指令集手册,看起来有两种不同形式的ADC匹配/编码ADC EAX, ECX如下:
ADC r/m32, r32 (11 /r , which encodes to 11C8)
Run Code Online (Sandbox Code Playgroud)
要么
ADC r32, r/m32 (13 /r, which encodes to 13C1)
Run Code Online (Sandbox Code Playgroud)
我的问题是(因为我做了正确的数学),是11C8和13C1相同呢?汇编程序在选择一种编码而不是另一种编码时会考虑哪些因素?问题是从实现汇编程序的角度来看,所以问题通常不在于这个特定的假设指令.
如果这是一个冗长的答案,请指出我正确的方向,因为我在谷歌上搜索失败.