2017-05-17 22 views
5

我正在準備建設一個Forth解釋整體的知識,並希望拆卸一些通用的第四碼字,如+-*的等的Dissassembly第四與「看」

我Gforth碼字(我目前的版本是0.7.3,安裝在Ubuntu Linux上)將允許我反彙編我使用命令see以及單個代碼字.進行的冒號定義。但是,當我用其他代碼字see +see /進行嘗試時,我收到一個錯誤消息說,Code +,然後我無法再輸入終端,即使按Control-c。

我應該可以反編譯/反彙編代碼的話,如圖中的Gforth手冊:https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Decompilation-Tutorial.html

任何人都有這個問題,你知道如何解決它?

+0

我認爲這是打印字的實際二進制值 - 和二進制數據會弄亂你的終端。 –

+1

我在Windows上檢查過。 'see +'顯示'Code +'行,然後是反彙編這個詞。 GForth 0.7.0在Windows上。我想在Ubuntu上GForth 0.7.3的反彙編有一個bug。 –

+0

我也在Ubuntu 16.04上檢查過。我有GForth 0.7.2,發生過同樣的情況:顯示Code +',終端鎖定。很可能是一個錯誤,無論是在'see'中,還是更可能在反彙編中。 –

回答

2

恢復爲the old ptrace method爲我做了。

首先,來自命令行用戶運行:

echo 0 >/proc/sys/kernel/yama/ptrace_scope 

之後see應拆卸不管它不能反編譯。命令行示例(不必是):

gforth -e "see + bye" 

輸出:

Code + 
    0x000055a9bf6dad66 <gforth_engine+2454>: mov %r14,0x21abf3(%rip)  # 0x55a9bf8f5960 <saved_ip> 
    0x000055a9bf6dad6d <gforth_engine+2461>: lea 0x8(%r13),%rax 
    0x000055a9bf6dad71 <gforth_engine+2465>: mov 0x0(%r13),%rdx 
    0x000055a9bf6dad75 <gforth_engine+2469>: add $0x8,%r14 
    0x000055a9bf6dad79 <gforth_engine+2473>: add %rdx,(%rax) 
    0x000055a9bf6dad7c <gforth_engine+2476>: mov %rax,%r13 
    0x000055a9bf6dad7f <gforth_engine+2479>: mov -0x8(%r14),%rcx 
    0x000055a9bf6dad83 <gforth_engine+2483>: jmpq *%rcx 
end-code 

來源:安東·埃特爾