为什么我的第一条asm指令位于0x8049000而不是0x8048000?

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

所以我有一个NASM程序,在32位模式下用-g编译。 编译命令为:

nasm -f elf -g -dOS_LINUX bst.asm
nasm -f elf -g -dOS_LINUX ioargs.asm
ld -m elf_i386 bst.o ioargs.o -o bst

当我断点到第一条指令并执行

layout asm
时,地址 是
0x8049000
而不是
0x8048000
,这是 Linux 上
.text
段开始的已知地址。

我注意到

0x8049000 - 0x8048000
4096
,它是 i386 上的一页大小。

那么为什么会有这样的偏移呢?发生什么事了?

linux assembly gdb elf
© www.soinside.com 2019 - 2024. All rights reserved.