问题标签 [stack-machine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 如何使用 Data.SBV 来帮助导出正确的堆栈机器实现?
Graham Hutton,在 Haskell 编程的第 2 版中,最后两章讨论了基于堆栈机器的 AST 实现这一主题。最后,他展示了如何从AST的语义模型中推导出该机器的正确实现。
我试图Data.SBV
在推导中寻求帮助,但失败了。
我希望有人可以帮助我了解我是否:
- 要求一些
Data.SBV
不能做的事情,或者 - 要求
Data.SBV
它可以做的事情,但要求不正确。
我们得到:
发生了什么?!好吧,也许,要求 SBV 解决谓词(即 - )
以外的任何问题都行不通?a -> Bool
c# - 使用 Stack 机器用 Brouncer 公式逼近 PI
我正在研究如何翻译这个公式以获得 PI 的近似值(基于 Brouncer's)到堆栈机器。
我正在使用的公式4/(1 + 1^2/(2 + 3^2/(2 + 5^2/(2 + 7^2/(2 + 9^2/2)))))
大约是 2.97。我怎样才能把它翻译成堆栈机器代码?
这是我到目前为止所拥有的,但它是错误的:
(说明从下到上阅读)
它以 4 除以 4.0909 结束,但它应该将 4 除以 1.344。那里有一些数学语法是错误的,但我试过了,还没有弄清楚我错在哪里......
如果需要,这是我为阅读说明而构建的类,它在 C# 中,但应该被广泛理解:
编辑:我解决了这个问题。我的数学语法一团糟。正确的堆栈机是:
assembly - 这些是这些堆栈操作的最小可能的 x86 宏吗?
我正在制作一个基于堆栈的语言作为一个有趣的个人项目。所以,我在堆栈上有一些有符号/无符号的 32 位值,我的目标是编写一些在这个堆栈上运行的汇编宏。理想情况下,它们会很小,因为它们会被大量使用。由于我是 x86 程序集的新手,我想知道你们是否有任何可以想到的提示或改进。非常感谢您的时间,谢谢!
注意:在宏展开后会使用优化器来避免这样的情况,pop eax; push eax
所以不用担心!
stack-machine - Stack Machines 和 3AC Machines 如何解决表达式?
所以,我在 Stack Machines & 3AC (Register) Machines 如何解释表达式方面有点挣扎。以这个表达式为例:
4 * 2 - 3
作为 3AC 机器(指令集具有三操作数,一种寄存器寄存器机器),我认为它看起来像这样
(注意 - 我使用 '#' 表示注释,很确定这不是正确的语法):
LOAD 4, r 0 #寄存器0存储4
LOAD 2, r 1 #寄存器1存储2
MUL r 0 , r 1 , r 0 # 寄存器 0 现在存储 8 (4 x 2)
LOAD 3, r 1 # 寄存器 1 现在存储 3
SUB r 0 , r 1 , r 0 # 寄存器 0 存储 5 (8 - 3)
对不起格式。我不知道如何在代码块中获取下标。
我认为堆栈机器看起来像这样: