# BVM运行机制

虚拟机有两个高级操作:准备虚拟机和验证谓词。

准备虚拟机

将程序参数依次放在数据堆栈上,以便最后一个参数在堆栈顶部。使用标准内存成本函数,堆栈的添加量将根据运行限制进行计数。

验证谓词

使用谓词程序初始化VM,并在PC设置为零的情况下开始执行。

在每个执行步骤的开始,都要检查PC。如果小于程序的长度,则VM会在程序中该字节位置读取操作码,并执行相应的指令。指令按照“ 指令”部分中的说明执行。运行限制根据指令的运行成本降低或增加。如果指令的运行成本超过当前的运行限制,则该指令将不会执行,并且会立即执行失败。

如果在执行步骤开始时PC等于或大于程序的长度,则执行完成,并且将检查数据堆栈的最高值并将其解释为布尔值。如果为false,或者数据栈为空,则验证失败;否则,验证失败。否则,验证成功。(注意:执行完成时,数据堆栈可以包含任意数量的元素;没有“干净的堆栈”要求。完成后,alt堆栈也可以为非空。)

每一步骤之后,PC都会增加当前指令的大小。

上次更新: 3/28/2020, 5:24:14 PM