我一直在從頭開始實施我自己的腳本語言+虛擬機,以進行小型實驗。腳本閱讀器解析腳本並將其轉換爲運行時引擎將執行的指令流。虛擬機中的流量控制指令
在開始時我沒有考慮它,但現在我想包括流量控制(循環,分支等)。我對語言理論並不熟悉,只是看了一些啓發靈感的例子。
但是x86和java虛擬機都有大量用於流量控制的指令。在x86中,有很多指令可以根據標誌狀態和其他指令以某種方式操作相關標誌來跳轉。在Java中,似乎有16條指令可以進行某種比較和條件跳轉。
這可能是有效的或由硬件特定的原因動機,但它不是我所期待的。
我尋找一種精簡優雅的流量控制解決方案,只需要幾條專用指令,而且不會太複雜,無法實施和維護。
我很自信,我可以想出一些有用的東西,但我寧願提高我的知識,而不是重新發明輪子。任何有關材料的解釋或鏈接都非常受歡迎!
我想複雜的條件跳轉原語將是我的首選解決方案。其他指令支持布爾表達式作爲參數allready,所以條件跳轉也是有意義的。另一個讓我感到困惑的問題是,我的解析器按順序工作,所以在跳轉指令被壓入指令流時跳轉的地址或偏移量將不知道。但我想,假設我有代碼塊,只需要一條指令到達當前塊的開始,一條指令就可以跳出來,對吧? – user390507