我正在建设一个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)
信用:安东·埃特尔