|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.09.2011, 21:46 | #1 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
сегментные регистры
Добрый вечер! Возник вопрос по сегментным регистрам. Вроде бы когда мы программируем под Windows в отлиие от DOS-a вся память - один сегмент. Или же просто сегмент кода не делится на части? И имеется 3 сегмента: сегмент данных, сегмент кода и сегмент стека.
Ну, рассмотрел несколько примеров. В принципе, они имеют очень много общего между собой: ПРИМЕР № 1 Код:
что мы помещаем в стек? ПРИМЕР № 2 Код:
непонятна первая строка. Не одно ли то же это, что mov edi, IMAGE_DOS_HEADER и обычно когда пишут ptr - это ж типа указатель, пишут на что указывает, на BYTE или DWORD. Данный пример был взят из туториалов по ассемблеру с WASM-а (стр. 284). со второй строкой только один вопрос. насколько я понимаю, EDI - указатель на структуру. почему не написано как-то так add edi, BYTE PTR [edi].e_lfanew просто всегда когда обращались по какому-нибудь адресу писали ____ PTR [adress] ПРИМЕР № 3 пример из туториалов, только со страницы 273 Код:
это то же самое что Код:
Заранее спасибо. |
02.09.2011, 22:26 | #2 | ||||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
FS особый сегмент, помоему это часть установки SEH обработчика. Цитата:
а так в принципе верно.(по крайней мере для ds,es,cs,ss) Цитата:
Цитата:
про пример три не знаю. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||||
02.09.2011, 23:11 | #3 | ||
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
Цитата:
UPD: Цитата:
Последний раз редактировалось SnX; 02.09.2011 в 23:14. |
||
03.09.2011, 10:21 | #4 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
это действительно установка SEH. Я про это читаю.Спасибо.
А какая разница между этим Код:
Код:
Последний раз редактировалось Dimarik; 03.09.2011 в 10:23. |
03.09.2011, 12:48 | #5 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
03.09.2011, 13:19 | #6 | |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
Цитата:
|
|
03.09.2011, 13:30 | #7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
03.09.2011, 15:31 | #8 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
assume это директива ассемблеру сопоставлять далее по листингу регистр/метку с указанной структурой. RTFM же
Нет, ну правда..
|
03.09.2011, 17:55 | #9 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
спасибо большое
|
04.09.2011, 11:29 | #10 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
Код:
MOV D[EBX+4],2h зачем здесь D? или это указывает что по адресу EBX+4т помещаем DWORD 2h???? 2. и ещё имеется вопрос по поводу меток. почему то пишут >L2: а то просто jmp L2? или же знак > несёт особое значение 3. MOV EDI,[EDI] - как я понял, здесь в регистр EDI загружается значение, на которое указывал регистр EDI. Только вот непонятно одно. откуда компилятор знает, загружать BYTE или DWORD или ещё что-то? просто обычно писалось если загружали BYTE так: mov EDI, BYTE PTR [EDI] P.S. я читаю мануал про SEH, там так написано. Win32 Exception handling for assembler programmers by Jeremy Gordon |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
pascal сегментные часы | world12_tk | Помощь студентам | 9 | 03.06.2009 22:20 |
Регистры | Манжосов Денис :) | Помощь студентам | 8 | 28.07.2008 12:48 |
Регистры | RealSHELS | Общие вопросы Delphi | 3 | 28.03.2008 18:56 |
Регистры | Elm0 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 13 | 10.02.2008 19:49 |