嘿,伙计,这是你一直等待的时刻,我们要写一些代码。

首先我们来看一个 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。

最后修改:2023 年 09 月 08 日
如果觉得我的文章对你有用,请随意赞赏