嗯,不完全是。我有更多的功能性數據結構問題。haskell中的CPU仿真,函數式數據結構和拉鍊?
說我想要一個CPU的執行模型。我有一些改變CPU狀態的指令(比如它是一個基於堆棧的cpu,只有跳轉有操作數......或其他),一些構成程序的指令列表和標籤。跳轉是通過引用某個標籤來完成的,而不是一些偏移量。我如何表達這一點?
如果我有一個看起來像[Label "foo", Add, Add, Mult, Label "bar", Jnz "foo"]
的程序,那麼當我點擊Jnz "foo"
時,我需要向後搜索並轉發標籤「foo」以繼續執行。這似乎有點愚蠢。我想我應該能夠有一個更好的數據結構,允許快速跳轉到標籤。現在,我會說我不想存儲偏移量。假設CPU允許自修改代碼或類似的東西。我應該如何修補代碼,同時確保引用仍指向當前版本的代碼?
我喜歡拉鍊的想法。 我只是不知道如果做拉鍊跳轉到在O預定位置的想法(1)時間是有道理
那麼我該如何修改代碼,同時保持引用的機智? – Evan
哦,我錯過了有關自修改代碼的部分。這確實使它有點棘手。我會考慮並更新答案。 –