我有一个.bss
部分,其中有一个8字节的缓冲区。现在,我正在寻找一种方法将数字2
存储在缓冲区内而不发出系统调用。那可能吗 ?
我的尝试不起作用:
.section .text
.section .bss
.lcomm SAMPLE_BUFFER, 8
.globl _start
_start:
movl $2,SAMPLE_BUFFER
movl $1, %eax
int $0x80
执行时:
$ 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)
在发出.text
的机器代码之前,您需要确保切换回_start
部分。按原样,你将_start
放在.bss
中,这是不可执行的,会导致程序崩溃。
除此之外,您的代码似乎是正确的。