NASM 笔记 发表于 2021-03-22 编译目前使用的是64位的Ubuntu环境,默认会编译成64位的,编译成32位的在参数上有些差异。 123nasm -f elf32 foo.asm -o foo.o # NASM编译成ELF32位目标文件gcc -m32 -g -c bar.c -o bar.o # GCC编译成32的目标文件ld -m elf_i386 foo.o bar.o -o foobar # 链接目标文件,生成执行文件 GDB一些常用的GDB调试的命令 123456789set disassembly-flavor intel # 默认AT&T格式,可以设置为Intel格式disassemble _start # 反汇编,这一步主要是为了后续设置断点用break * _start + 10 # 设置断点,此处是_start开始的第10行代码处run # 执行程序,设置断点后会停在断点处step # 单步调试,可以简写为sinfo registers # 显示寄存器layout reg # 一般我会使用这个q # 退出程序x 0xffffd070 # 查看0xffffd070地址处的内存 参考ASM 110: Gdb (30 pts)GDB命令基础,让你的程序bug无处躲藏