Я новичок в программировании(ВООБЩЕ), тут уже люди задавали подобный вопрос, но я не увидел там ответа. Читать туториалы нет времени..... Пожалуйста ответьте на мои вопросы, не вдаваясь в подробности: 1.fs - это я так понял цепочка структур (SEH), тогда fs - это зарезервированный идентификатор, или нужно что-то прописывать, прежде чем использовать? (inc'и, lib'ы) 2. Перед его использованием я встретил строчку: assume fs:nothing. Что она означает??? (А если напишу assume GRBP:nothing)
_Vasya_ По идее, это ты можешь это прочитать в статьях, увидеть в сорцах. Ну да ладно, fs это не то что ты ты думаешь, под винды это указатель на хорошую структуру данных, а про assume любой талмуд по ассемблеру, точнее чем я скажет! ЗЫ: Правила хорошего тона требуют прочтения "как задавать хороший вопрос?", логичней было бы назвать: "как задать вопрос, чтобы получить толковый ответ?"
1. FS - это сегментный регистр. Он является индексом в таблице дескрипторов и описывает конкретный сегмент. База данного сегмента в ring3 и в ring0 разная. В ring3 указывает на структуру TIB, в ring0 - KPRCB. Для обращения к регистру не надо никаких include. 2. Чтобы регистр можно использовать в masm - надо такую строку assume fs:nothing. Директива assume предназначена для определения оффсетов и правильного использования регистров. По умолчания просто использования регистра fs запрещено.
Bill_Prisoner Точнее, директива .model flat автоматически генерирует такую фигню: ASSUME cs:FLAT, ds:FLAT, ss:FLAT, es:FLAT, fs:ERROR, gs:ERROR EvilsInterrupt Уже не пью
Bill_Prisoner AFAIK TEB...? А это одно и то же? Thread Environment Block =?= Thread Information Block.