Rappel:Linux 汇编 REPL 交互工具
Rappel 是一款专为 Linux 设计的汇编 REPL(交互式解释器)工具,支持 x86、amd64、armv7 和 armv8 多种架构,让开发者能够实时编写、执行和调试汇编代码。无论是学习汇编语言还是进行底层系统开发,Rappel 都能提供快速反馈和直观的寄存器状态展示。
为什么选择 Rappel?
1. 多架构支持
Rappel 支持 x86、amd64(64 位 x86)、armv7 和 armv8 四种主流架构,通过统一的交互界面,开发者可以无缝切换不同架构的汇编指令测试。项目架构代码按处理器类型清晰划分。
2. 两种灵活模式
Rappel 提供两种运行模式,适应不同场景:
管道模式:快速执行单行指令
适合一次性测试简单汇编指令,通过管道输入直接获取结果:
$ echo "inc eax" | bin/rappel rax=0000000000000001 rbx=0000000000000000 rcx=0000000000000000 rdx=0000000000000000 rsi=0000000000000000 rdi=0000000000000000 rip=0000000000400004 rsp=00007ffc73019c20 rbp=0000000000000000 [cf:0, zf:0, of:0, sf:0, pf:0, af:0, df:0]
交互模式:深度调试与指令序列测试
启动交互式环境,支持多条指令连续执行和寄存器状态跟踪:
$ bin/rappel > inc rax > push rax > pop rbx > cmp rax, rbx
3. 实时寄存器状态展示
执行每条指令后,Rappel 会即时显示所有通用寄存器、标志位和状态寄存器的值,帮助开发者直观理解指令执行效果。例如 ARMv8 架构的寄存器输出:
X0: 0x0000000000000000 X1: 0x0000000000000000 X2: 0x0000000000000000 X3: 0x0000000000000000 X4: 0x0000000000000000 X5: 0x0000000000000000 X6: 0x0000000000000000 X7: 0x0000000000000000 PC: 0x0000000000400004 SP: 0x0000007fedb9be40 PS: 0x0000000000000000
快速开始:从安装到运行的 3 个简单步骤
1. 安装依赖
Rappel 仅依赖 libedit 和对应架构的汇编器:
- x86/amd64 需要
nasm - ARM 架构需要
binutils(包含as)
在 Debian/Ubuntu 系统上可通过以下命令安装:
sudo apt-get install libedit-dev nasm binutils
2. 编译安装 Rappel
git clone <repository_url>
cd rappel
CC=clang make
# 或使用 gcc: make
跨架构编译
默认编译当前架构版本,如需指定架构(如在 amd64 系统编译 x86 版本):
ARCH=x86 make

