使用'see'对Forth代码字进行反汇编

tha*_*lia 5 forth gforth

我正在建设一个Forth解释准备全面的知识,并希望拆卸一些通用的第四码字如+,-,*,等.

我的Gforth(我目前在Ubuntu Linux上安装了0.7.3版本)将允许我用命令反汇编冒号定义,see以及单个代码字..但是当我用其他代码词尝试它时,see +或者see /,我得到一个错误,Code +然后我就不能再输入我的终端了,即使我按下control-c.

我应该能够反编译/反汇编代码字,如Gforth手册所示:https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Decompilation-Tutorial.html

有没有其他人有这个问题,你知道如何解决它吗?

小智 7

恢复到旧的 ptrace 方法为我做到了。

首先,从命令行以root用户身份运行:

echo 0 >/proc/sys/kernel/yama/ptrace_scope
Run Code Online (Sandbox Code Playgroud)

之后see应该反汇编它不能反编译的任何东西。命令行示例(不必是root):

gforth -e "see +  bye"
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

信用:安东·埃特尔