Assembly 写入x86程序集中的.bss节

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

我有一个.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)

在发出_start的机器代码之前,您需要确保切换回.text部分。按原样,您将_start放在不可执行的.bss中,导致程序崩溃


除此之外,您的代码似乎是正确的。

在发出启动机器代码之前,您需要确保切换回.text部分。按原样,您将_start放在不可执行的.bss中,导致程序崩溃

除此之外,您的代码似乎是正确的。

还要注意的是,.lcomm知道自动将内容放入.bss,您甚至不需要从.text切换。还要注意的是,.lcomm知道自动将内容放入.bss,您甚至不需要从.text切换。