书上有说,我的理解是SS、DS段共段基址。
做如下内容的ASM文件:
.386
.model flat,stdcall
.stack 4096
.data
a db 'abcd'
.code
start:
push 'a'
ret
end start
ML时 用COFF参数,LINK时用SUBSYSTEM:CONSOLE参数,然后用OD来看EXE文件情况,没有看到几个段共段基址的现象。
大概现象是:.data和.text都在00400000H以后的内存,而堆栈在前面很多。
谁给分析下。
------解决方案--------------------------------------------------------
flat模式是共享4GB虚拟地址空间。
------解决方案--------------------------------------------------------
平坦模式是cs、ds、es、ss完全重叠,都是基地址为0、大小为4GB,程序中不再考虑段地址,用偏移量即可表示地址。