嗯,不完全是。我有更多的功能数据结构问题。
假设我想对 CPU 的执行进行建模。我有一些改变 CPU 状态的指令(比如说它是一个基于堆栈的 cpu。只有跳转有操作数......或其他),一些构成程序的指令列表和标签。跳转是通过引用某个标签而不是某个偏移量来完成的。我如何表示这一点?
如果我有一个看起来像 的程序,[Label "foo", Add, Add, Mult, Label "bar", Jnz "foo"]
当我点击 时Jnz "foo"
,我需要前后搜索标签“foo”以继续执行。这似乎有点傻。我想我应该能够有一个更好的数据结构,允许快速跳转到标签。现在,我会任意说我不想存储偏移量。假设 CPU 允许自修改代码或类似的东西。我应该如何修补代码,同时确保引用仍然指向代码的当前版本?
我喜欢拉链的想法。我只是不知道在 O(1) 时间内让拉链跳转到预定义位置的想法是否有意义