小编Sva*_*rog的帖子

eval表单应该在null词法环境中评估给定的表单,我没有得到我期望的结果

假设我有一个特殊的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

提前感谢您的帮助!

common-lisp

11
推荐指数
2
解决办法
506
查看次数

编码ADC EAX,ECX - 2种不同的编码方式?(arch x86)

我正在查看英特尔指令集手册,看起来有两种不同形式的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相同呢?汇编程序在选择一种编码而不是另一种编码时会考虑哪些因素?问题是从实现汇编程序的角度来看,所以问题通常不在于这个特定的假设指令.

如果这是一个冗长的答案,请指出我正确的方向,因为我在谷歌上搜索失败.

x86 assembly

8
推荐指数
1
解决办法
398
查看次数

标签 统计

assembly ×1

common-lisp ×1

x86 ×1