Windows的FLAT内存模式

在基于x86的Windows系统中,在x86保护模式下,地址总线是32位的,所有通用寄存器都是32位的,间接寻址时不用分段就可以寻址4GB的地址空间。保护模式下,所有段的基地址都是0,段限长是0xFFFFFFFF。段寄存器存放段选择子,在汇编程序中,链接器会对程序进行地址重定位。下面用伪代码讲述:

code segment

mov ax,[data_label];//将ds:data_label中的数据送至ax,这里data_label在数据段中虽然是0,但是经过链接器处理后,data_label将成为0~4GB的线性地址中的一个线性地址。这里的data_label在程序员眼中是逻辑地址,实际上经过链接器处理后,整个程序位于4GB的线性地址空间中。代码段,数据段,栈段在程序被操作系统加载后,当应用程序执行时,操作系统会将CS,DS,ES等指向对应的段,这些段的基地址都是0,由于通用寄存器都是32位的,地址总线也是32位的,所以进行间接寻址时不用分段就可以寻址4GB的地址空间。

end

data segment

data_label: 0x1 0x2 0x3

end

stack segment

end

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值