嘿,伙计,这是你一直等待的时刻,我们要写一些代码。
首先我们来看一个 Go 的代码例子。
// Go
a := 1
我们将变量 a 的值设置为 1 。
在第 8 节我们讨论过,在使用高级语言编程时,我们可以声明变量来临时存储数据。寄存器,你可以看作汇编语言的变量。
// X86-64 处理器的汇编
mov rax, 1;
我们将寄存器 rax 的值设置为 1 。
我们在这里使用了 mov 指令(“移动”的缩写)。它会将右侧 1 这个值移动到左侧的 rax 寄存器中。
现在看起来,变量和寄存器真的很相似吧,但它们的差异点也需要记住。
使用变量时,我们可以声明任意个数的变量,并且可以随心所欲的命名它们。
使用寄存器时,仅限于处理器指定。我们也不能命名它们。
// Go
a := 1
b := a
b 的值为 1 。
// X86-64 处理器的汇编
mov rax, 1;
mov rbx, rax;
上面这个例子,你认为 rbx 的值是什么?
我们将一个寄存器的值设置为另一个寄存器的值,rbx 的值为 1 。
让我们最后再来看一个关于 mov 例子吧!加油!你能记住 mov 的重点。
// Go
a := 1
b := 2
a = b
我们先将 a 的值设置为 1,在最后,a 的值为 2,因为我们执行了 a = b,把 b 赋值给了 a 。
// X86-64 处理器的汇编
mov rax, 1;
mov rbx, 2;
mov rax, rbx;
你认为最后 rax 的值是多少呢?
即使我们先将 rax 的值设置为 1,不过最后 rax 值应该是 2,因为我们将 rbx 的值 2,设置给了 rax。