在x86程序集中写入.bss部分

问题描述 投票:1回答:1

我有一个.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)
assembly x86 gas
1个回答
4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.