Assembly 写入x86程序集中的.bss节
我有一个.bss部分,里面有一个8字节的缓冲区。现在,我正在寻找一种在不发出系统调用的情况下将数字2存储在缓冲区中的方法。可能吗 我的尝试无效:Assembly 写入x86程序集中的.bss节,assembly,x86,gnu-assembler,Assembly,X86,Gnu Assembler,我有一个.bss部分,里面有一个8字节的缓冲区。现在,我正在寻找一种在不发出系统调用的情况下将数字2存储在缓冲区中的方法。可能吗 我的尝试无效: .section .text .section .bss .lcomm SAMPLE_BUFFER, 8 .globl _start _start: movl $2,SAMPLE_BUFFER movl $1, %eax int
.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)
在发出_start的机器代码之前,您需要确保切换回.text部分。按原样,您将_start放在不可执行的.bss中,导致程序崩溃
除此之外,您的代码似乎是正确的。在发出启动机器代码之前,您需要确保切换回.text部分。按原样,您将_start放在不可执行的.bss中,导致程序崩溃 除此之外,您的代码似乎是正确的。还要注意的是,.lcomm知道自动将内容放入.bss,您甚至不需要从.text切换。还要注意的是,.lcomm知道自动将内容放入.bss,您甚至不需要从.text切换。