如何在汇编中实现数据类型(例如堆栈)?
我需要在汇编中实现自定义数据结构。最好,它需要是动态的。类似于 C++/Java 中的链表,其中每个元素都指向下一个元素。请注意,每个元素的大小可能会有所不同。
我该怎么做?
I need to implement a custom data structure in assembly. Preferably, it needs to be dynamic. Something like a linked list in C++/Java where each element points to the next element. Please note that the size of each element may vary.
How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
与 C 中的情况相同。汇编具有函数和地址空间。从基础开始:您的堆栈需要具备哪些功能?把实际的数据结构放在一边,关注大局。
您所需要的只是一个push() 函数和一个pop() 函数、一个将这些项目粘贴到内存中的位置,以及一个计数器来告诉您已经使用了多少空间。
哦,您可能应该在开始之前检查您的数据结构,因为在 C++ 和 Java(事实上,或任何其他语言)中,推送到堆栈上的对象都不会指向堆栈上的下一个对象。这就是所谓的链表。
The same you would in C. Assembly has functions and address spaces. Start with the basics: what functions does your stack need to have? Put the actual datastructures aside and focus on the big picture.
All you need is a function to push() and a function to pop(), a place to stick these items in the memory, and a counter to tell you how much of that space you've used up.
Oh, you should probably review your data structures before starting, as in neither C++ nor Java (or any other language, as a matter of fact) does an object pushed onto a stack point to the next object on the stack. That's called a linked list.
尝试使用 C 实现数据结构,然后查看生成的程序集。然而,对于您的内存需求,可能需要一些更仔细的考虑(例如使用非易失性内存与易失性内存来存储不同大小的元素)。
Try implementing your data structure using C and then look at the assembly generated. For your memory needs, however, it might require some more careful considerations (such as using non-volatile vs. volatile memory for storage for the varying sized elements).