2016-02-12 50 views
0

所以我做了一個基本的基於堆棧的虛擬機和一個編譯字節碼的編譯器,但是我遇到了一個我不知道如何解決的問題。如何在虛擬機中實現快速運行時錯誤?

我需要檢查的東西,如除以零和堆棧溢出並拋出運行時錯誤,但我明白這樣做的唯一方法是使用異常(我在C++中執行此操作),或通過編寫ifs我。但是,如果將所有的地方放在一起,將使虛擬機真的很慢

什麼是實現運行時錯誤的最佳方式,理想情況下,只有在引發實際錯誤時才使用CPU?

回答

1

我不知道最好,但是在我寫的字節碼解釋器中,我選擇了圍繞解釋器中的主開關語句的try/catch。是的,這意味着每個語句都有一個隱含的異常框架,這會增加一定的運行時間開銷,但畢竟這是一個解釋器,所以對我來說開銷是可承受的。

+0

是的,就我所瞭解的那樣。我在Windows上,所以現在我試圖找出SetUnhandledExceptionFilter()和RaiseException()等的組合,但迄今沒有成功。 – Alex