写入 x86 程序集中的 .bss 部分
Writing to .bss section in x86 assembly
我有一个 .bss
部分,其中有一个 8 字节的缓冲区。现在,我正在寻找一种在不发出系统调用的情况下将数字 2
存储在缓冲区中的方法。这可能吗?
我的尝试无效:
.section .text
.section .bss
.lcomm SAMPLE_BUFFER, 8
.globl _start
_start:
movl ,SAMPLE_BUFFER
movl , %eax
int [=10=]x80
执行时:
$ as --32 buffer.s -o buffer.o
$ ld -m elf_i386 buffer.o -o buffer
$ ./buffer
fish: “./buffer” terminated by signal SIGSEGV (Address boundary error)
您需要确保在发出 _start
的机器代码之前切换回 .text
部分。按原样,您将 _start
放入不可执行的 .bss
中,从而导致程序崩溃。
除此之外,您的代码似乎是正确的。
我有一个 .bss
部分,其中有一个 8 字节的缓冲区。现在,我正在寻找一种在不发出系统调用的情况下将数字 2
存储在缓冲区中的方法。这可能吗?
我的尝试无效:
.section .text
.section .bss
.lcomm SAMPLE_BUFFER, 8
.globl _start
_start:
movl ,SAMPLE_BUFFER
movl , %eax
int [=10=]x80
执行时:
$ as --32 buffer.s -o buffer.o
$ ld -m elf_i386 buffer.o -o buffer
$ ./buffer
fish: “./buffer” terminated by signal SIGSEGV (Address boundary error)
您需要确保在发出 _start
的机器代码之前切换回 .text
部分。按原样,您将 _start
放入不可执行的 .bss
中,从而导致程序崩溃。
除此之外,您的代码似乎是正确的。