2017-06-05 46 views
0

有什麼辦法讓Python的解釋器將任何Python代碼編譯成NOP指令?如何讓Python解釋器發出NOP指令?

(我具體講通過編譯Python代碼,不直接產生它獲得字節碼。)

+1

您能否給出一些背景知道您爲什麼要這樣做,以及您對NOP的去向以及代碼周圍的事情有多關心? – user2357112

+0

通過「任何代碼」,你的意思是即使代碼通常會編譯成執行某些操作的指令,或者你只是想找到一些能產生NOP的代碼? – user2357112

+0

@ user2357112:最初我希望能夠控制NOP(它在製作字節碼模板時非常方便,因此我不必手動篡改跳轉偏移量),但是由於我無法找到任何*方式生成一個NOP,在這一點上,我只是想看看是否有可能生成它。所以,如果你知道一種方法來生成任意代碼,那就更好了,但否則任何生成它的方法都可以。 – Mehrdad

回答

1

這似乎是不可能的。 NOP操作碼僅由peephole optimizer生成,但窺視孔優化的最後一步將刪除新指令索引的所有NOP和重定向跳轉。

事實上,除了bug之外,這在發佈的每個Python版本中似乎都不可能實現。在Python 2.3中,沒有NOP操作碼,而在Python 2.4中,窺視優化器已經刪除了它生成的所有NOP。