在x86程序集中写入.bss部分
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在x86程序集中写入.bss部分相关的知识,希望对你有一定的参考价值。
我有一个.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
中,这是不可执行的,会导致程序崩溃。
除此之外,您的代码似乎是正确的。
以上是关于在x86程序集中写入.bss部分的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2017 的 x86 程序集中使用 printf?