前一段时间看了点文章学习了 wasm 的执行方式,它是一个栈式虚拟机,本身内部会有一个栈来控制短存数据,还有一个虚拟的内存可以用来做存储。
我想问一下这个短存数据的栈,是否可以理解为这个虚拟机的寄存器?真实世界的 CPU 中有(或有过)类似的结构么?因为这个栈的大小似乎是没有一个太小的限制,所以似乎和限制数量的 x86 寄存器对不上
1
cpstar 2021-08-14 23:55:13 +08:00
可以把 EAX\EBX\ECX\EDX 作为深度为四的栈使用,
PUSH=MOV EBX,EAX; MOV ECX,EBX; MOV EDX,ECX; MOV #ADDR,EDX; POP=MOV EDX,#ADDR; MOV ECX,EDX; MOV EBX,ECX; MOV EAX,EBX; 大概是这样,脑袋中的汇编大概是 18 年前学的了。 JVM 是基于栈的。我的硕士论文做的基于某个体系的 JVM,那个体系是基于栈的硬件结构,只是用 C 做了一个模拟器,没有实际进行电路设计。 |
2
LeeReamond OP @cpstar 感谢回复,不过深度为 4,单 pop 命令周期还这么多,感觉不太像是能把虚拟机对应到物理结构
|