理解比特币脚本语言的运行
Script 是一种简单的脚本语言,也是比特币交易处理的核心。如果你曾经写过汇编代码,你会发现这篇文章非常容易理解——可能还很有趣——否则它可能是最具挑战性的之一。保持专注!
比特币脚本是一个计算机程序,作为程序员的你肯定知道程序是什么。程序接收输入,执行一段时间,然后返回输出。编程语言是我们编写计算机能理解的程序的工具,因为大多数语言都带有将人类友好的代码映射到 CPU 操作(也称为 操作码)的 编译器。
操作码包括内存操作、数学运算、循环、函数调用以及你在像 C 这样的过程式编程语言中找到的一切。它们构成了 CPU 的口语,即所谓的 机器代码。由于字节是计算机的首选语言,难怪操作码也是字节。因此,机器代码是一串表示将在 CPU 上执行的操作的字节。
考虑以下用高级编程语言如 C 编写的代码:
x = 0x23;
x += 0x4b;
x *= 0x1e;
现在假设你想在一个假想的小端 CPU 上编译并运行这段代码,该 CPU 具有一个 16 位内存单元(一个 寄存器)和以下操作码集:
| 操作码 | 编码 | V |
|---|---|---|
| SET(V) | ab V |
16-bit |
| ADD(V) | ac V |
16-bit |
| MUL(V) | ad V |
16-bit |
操作码解释:
这种 CPU 的编译器会生成以下 9 个字节的机器代码:
ab 23 00 ac 4b 00 ad 1e 00
它的解释如下:
23。4b 加到寄存器中,现在是 23 + 4b = 6e。1e,得到 6e * 1e = ce4。寄存器保存最终结果,即 ce4。
大多数时候,我们需要用 变量 来跟踪复杂的程序状态。在 C 中,取决于变量是静态分配还是用 malloc 分配,它们存储在不同的内存布局中。虽然 malloc 分配的数据像...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!