2
似乎應該有一個標準化的解決方案。基本上問題是我想能夠計算我是否應該使用近跳或遠跳。如:計算移動目標偏移量的最佳方法
jump_to_near:
; ... lots of ops ...
jump_to_near:
e9 24 ff ff ff jmpq 1f22 <jump_to_far>
eb f9 jmp 1ff9 <jump_to_near>
近跳轉操作碼看起來是兩個字節,而遠跳操作碼是五。問題是,如果實際操作碼之後跳轉到標籤來到,我怎麼能知道使用哪一個?是否有一種標準化的算法來計算這樣的緊密依賴關係,尤其是考慮到可能會有很多跳轉的情況,其中更改操作碼的大小可能會影響其他跳轉。
其實我真的很喜歡第二種選擇。我可以試試看,謝謝! – sircodesalot
很酷。根據我的經驗,絕大多數的目標,實際上可以用短跳轉到達,但根據雙方的源語言和編碼風格變化明顯(以及其他因素,如內聯)。 –
是的,在我當前的實現中,我緩存了所有的操作碼,然後將它們釋放到內存中。因此,從擴展版本到簡化版本都很容易。比其他方式更容易(因此原來的問題)。如果我在一段時間(短距離假陰性測試)算錯一個或兩個一旦它不是什麼大不了的事。但是,我認爲一般來說大多數跳躍應該是短暫的。感謝幫助! – sircodesalot