Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 基于堆栈的虚拟机中变量的实现_Variables_Assembly_Stack_Virtual Machine - Fatal编程技术网

Variables 基于堆栈的虚拟机中变量的实现

Variables 基于堆栈的虚拟机中变量的实现,variables,assembly,stack,virtual-machine,Variables,Assembly,Stack,Virtual Machine,因此,我编写了一个基本的虚拟机,它有一个非常小的指令集,能够执行跳转、基本的数学运算,并将文本值推送到堆栈上[我目前将指令存储为操作码数组]。然而,我现在想添加一些指令来处理变量赋值,我想知道这是怎么做到的 我是否为变量和文字值使用单独的堆栈 如果这些变量保存在堆栈中,我如何记住它们在堆栈中的位置 我是否需要另一个数据结构来跟踪堆栈上的变量索引 谢谢你可以想怎么做就怎么做:)例如,JVM是一个基于堆栈的虚拟机,本地变量被索引(它们基本上是和数组)。如果将局部变量保存在堆栈中,请确保它们可以直

因此,我编写了一个基本的虚拟机,它有一个非常小的指令集,能够执行跳转、基本的数学运算,并将文本值推送到堆栈上[我目前将指令存储为操作码数组]。然而,我现在想添加一些指令来处理变量赋值,我想知道这是怎么做到的

  • 我是否为变量和文字值使用单独的堆栈
  • 如果这些变量保存在堆栈中,我如何记住它们在堆栈中的位置
  • 我是否需要另一个数据结构来跟踪堆栈上的变量索引
谢谢

你可以想怎么做就怎么做:)例如,JVM是一个基于堆栈的虚拟机,本地变量被索引(它们基本上是和数组)。如果将局部变量保存在堆栈中,请确保它们可以直接访问,而无需在创建后弹出所有推送的内容。另外,想想一个变量必须存在多少:它们是否存在于当前帧/函数中(例如,它们是局部变量)?他们是否在整个项目期间生活(例如,他们是全球VAR)?答案会告诉你把它们放在哪里。拥有另一种数据结构对我来说似乎很好。