嘿,我有一个关于 BSS 和 DATA 部分的问题

问题描述

我正在尝试学习 NASM...我尝试使用 1 个已初始化和 1 个未初始化数据 {buffer -> uninitialized,buffer2 -> initialized} 编写一个基本程序:

SECTION .data
    buffer2 dw 0x4140
SECTION .bss
    buffer resb 64
SECTION .text
    _start:
        mov byte [buffer],1
        mov byte [buffer2],2

然后我用 nasm -f elf64 test.S 组装它,并得到 test.o 文件,然后我试图查找两个部分开始的地址,但它们指向同一个地址..我不知道为什么……ds:00


test.o:     file format elf64-x86-64


disassembly of section .text:

0000000000000000 <_start>:
   0:   c6 04 25 00 00 00 00    mov    BYTE PTR ds:0x0,0x1
   7:   01
   8:   c6 04 25 00 00 00 00    mov    BYTE PTR ds:0x0,0x2
   f:   02

所以我试图寻找一个解释,我找到的唯一“解决方案”是在 readelf -S test.o 输出中:

There are 8 section headers,starting at offset 0x40:

Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 0]                   NULL             0000000000000000  00000000
       0000000000000000  0000000000000000           0     0     0
  [ 1] .data             PROGBITS         0000000000000000  00000240
       0000000000000002  0000000000000000  WA       0     0     4
  [ 2] .bss              NOBITS           0000000000000000  00000250
       0000000000000040  0000000000000000  WA       0     0     4
  [ 3] .text             PROGBITS         0000000000000000  00000250
       0000000000000010  0000000000000000  AX       0     0     16
  [ 4] .shstrtab         STRTAB           0000000000000000  00000260
       0000000000000037  0000000000000000           0     0     1
  [ 5] .symtab           SYMTAB           0000000000000000  000002a0
       00000000000000c0  0000000000000018           6     8     8
  [ 6] .strtab           STRTAB           0000000000000000  00000360
       000000000000001e  0000000000000000           0     0     1
  [ 7] .rela.text        RELA             0000000000000000  00000380
       0000000000000030  0000000000000018           5     3     8

BSS 和 DATA 有不同的大小..但我仍然不明白为什么在 objdump 中它传输到相同的地址...

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)