1
2
切向注释这些第一项与你提出的问题无关,但是…
我认为你应该使用“void*”而不是“char*”。我还有一个typedef用于函数指针类型:
然后你可以写:
实际的函数也会被修改-但只是非常轻微的:
另外,您还有一个小的命名问题-此函数是“intplusDoubleGivesDouble()”,而不是一个通用的“添加任意两种类型”函数。 直接回答问题
要做到这一点并不容易。例如,考虑:
在某些体系结构(例如32位或64位SPARC)上,type1结构将在4字节边界上对齐“number”,但type2结构将在8字节边界上对齐“number”(并且可能在16字节边界上具有“long double”)。如果堆栈指针尚未正确对齐,则在推送“byte”值后,“push individual elements”策略会将堆栈指针移动1,因此在推送“number”之前,您需要将堆栈指针移动3或7。虚拟机描述的一部分将是任何给定类型所需的对齐;相应的推送代码需要在推送之前确保正确对齐。
在x86和x86_64计算机上,如果打包数据,则会因数据访问不对齐而导致性能损失。在SPARC等机器上
在SPARC上,您需要将一个n字节的基本类型填充到一个n字节的边界上。在x86上,如果您这样做,您将获得最佳性能。
你必须阅读 manual .
请注意,“type1”技巧只需一个字符后跟一个类型,就可以满足对齐要求-可能需要使用“offsetof()”宏
好吧,我不会将数据打包到堆栈上——我会使用本机对齐,因为它被设置为提供最佳性能。编译器编写器不会随意向结构添加填充;他们将其放在那里是因为它对体系结构“最有效”。如果你决定更好地了解,你可以期待通常的结果-较慢的程序,有时会失败,而且不太可移植。 我也不相信我会在操作符函数中编写代码来假设堆栈包含一个结构。我将通过params参数从堆栈中提取值,知道正确的偏移量和类型是什么。如果我推了一个整数和一个双精度数,那么我会拉一个整数和一个双精度数(或者,可能,按相反的顺序-我会拉一个双精度数和一个整数)。除非您计划一个异常的虚拟机,否则很少有函数会有很多参数。 |
2
1
有趣的帖子,显示你投入了大量的工作。几乎是理想的。 我没有现成的答案,请耐心等待。我还要问几个问题:p
这只是从性能的角度来看吗?您计划引入指针和本机算术类型吗?
这是一个实现定义的东西。不是你能指望的跨平台的东西。
与本机单词大小匹配的值应该能给您提供最佳的性能。
我不知道我的头上有什么。但我见过类似的代码 this 被使用。
注意,你可以
specify attributes of variables
使用gcc
|
3
1
这里有一些非常好的问题,其中许多将与一些重要的设计问题纠缠在一起,但对我们大多数人来说,我们可以看到你正在努力的方向(在我写作时直接发布,这样你就可以看到你正在产生兴趣),我们可以很好地理解你的英语,你正在努力的方向是一些编译器问题,以及一些语言设计问题-很难解决这个问题,但是您已经在JNI工作了,这是希望… 首先,我会努力摆脱语用学;很多人, 非常多 会不同意的。关于原因的规范化讨论,请参阅D语言在这个问题上的立场的理由。另外,代码中还隐藏了一个16位指针。 这些问题几乎无穷无尽,研究得很好,而且很可能使我们陷入反对和内部不妥协的境地。如果我可以建议你阅读 Kenneth Louden's Home Page 以及英特尔体系结构手册。我已经读过了。数据结构的一致性,以及您提出讨论的许多其他问题都深深地隐藏在历史编译器科学中,并且很可能会让您沉浸在谁知道什么。(俚语或成语,指不可预见的后果) 上面写着:
有很多LIBS,Java有一些好的。我不了解其他人。一种方法是尝试编写lib。Java有一个良好的基础,为人们喜欢尝试更好的东西留出空间。从改善Knuth-Morris-Pratt或其他方面开始:开始的地方并不短缺。尝试 Computer Programming Algorithms Directory 当然,看看 Dictionary of Algorithms and Data Structures 在NIST
不一定,请参阅Dov Bulka-该员工拥有CS博士学位,并且在时间效率/可靠性稳健性等领域是一位精通的作者,这些领域不受某些“业务模型”范式的约束,因此我们可以从中获得一些“噢!在那些真正重要的问题上,这无关紧要。 作为一个总结,如您所描述的,仪表和控制占完成编程技能的实际市场的60%以上。出于某种原因,我们主要听说了商业模式。让我和你分享我从可靠的来源得到的内幕消息。从 10%到60%或更多 实际的安全和财产风险来自车辆问题,而不是来自盗窃、盗窃和类似的事情。你将永远听不到“在县矿产开采厂工作90天”的呼吁!对于交通罚单,事实上大多数人甚至没有意识到交通引用是(美国)4级轻罪,实际上是可以归类的。 在我看来,你已经朝着一些好的工作迈出了一大步…… |
saleem · java虚拟机中的ioper命令是ub-idiv顺序 8 年前 |
user3452305 · 带字符串的堆叠机 10 年前 |
user3318845 · 字节码如何更快?[已关闭] 10 年前 |
Robin Hoksbergen · 解释器基于堆栈的VM的替代方案 10 年前 |