ассемблер FASM. а чем дескриптор стека не нравится?
Код:
GDT_STACK db 00h, 10h,00h,10h,00h,10010110b,01000000b,00h
предел на 1000h, база тамже, следовательно могу адресовывать память под стек >1000h. поскольку в ПМ можно адресовать 4ГБ памяти я и поставил esp на последнюю ячейку памяти, т.е. 0FFFFFFFFh=4ГБ.
phantom-84 писал(а):
Когда стек пуст, значение указателя стека указывает не на какую-то ячейку стека, а на первую ячейку, непосредственно следующую за ним. Т.е., если стек занимает адреса от 1000_0000 до 1FFF_FFFF включительно, то при инициализации необходимо загрузить в указатель стека значение 2000_0000. (Адреса взяты мной с потолка и предназначены исключительно для примера).
возможно, это если модель памяти флат. когда я в дескрипторе ставлю в поле типа 011b, то это делает не сегмент данных (грубо говоря), а сегмент стека, следовательно можно адресовать все адреса большие базы. тогда по Вашим примерам esp должен указывать не на 2000_0000, а куда-нибудь подальше, иначе если я что-то положу в стек, то будет исключение.
А не могли бы вы рассказать что вообще в памяти находится и до каких адресов я могу ее юзать?