|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 29, 2004 10:18:06 Здравствуйте, Как бы сабж отключить навсегда ? В TASM есть замечательная директива NOSMART, а есть ли что-то подобное в MASM ? Проблема в том, что пишу в тексте: lea ecx, dword ptr ds:[ebp+dwData] а он генерит: lea ecx, dword ptr ss:[ebp+dwData] Как его заставить генерить тот код какой я пишу ? Спасибо |
|
|
Дата: Окт 29, 2004 13:20:35 Дык во 2м случае код меньше на байт. |
|
|
Дата: Окт 29, 2004 13:45:48 может надо сказать assume ds:<сегмент_отличный_от_ассумед_для_ss> и он поставит префикс ? или тупо перед командой написать segds |
|
|
Дата: Окт 29, 2004 14:02:58 S_T_A_S_ Это хорошо, что меньше, но это самодеятельность :) Я же явно указал префикс замены сегмента. infern0 Я так понял, что в MASM нельзя отключить оптимизацию как в TASM. Всю документацию и FAQ перерыл. Проблему решил пока написанием "db 3eh" перед командой, но в данном случае наверное проще взять TASM. |
|
|
Дата: Окт 30, 2004 05:04:14 Или FASM |
|
|
Дата: Окт 30, 2004 06:18:21 Ничего не понимаю - TASM что вставляет префикс переопределения сегмента перед командой которая вообще к памяти не обращается? |
|
|
Дата: Окт 30, 2004 08:53:01 The Svin Это MASM не вставляет префикса хотя ему это явно указали |
|
|
Дата: Окт 30, 2004 15:45:45 · Поправил: The Svin sep В общем я согласен, что MASM тяжело управляем но в этом случае MASM не вставляет префикса хотя ему это явно указали в команду которая вообще это префикс принципиально использовать не может. Это то же что требовать вставить префикс повторения перед mov например repe mov eax,ecx Если подойти формально (будь мы компилятором :) можно добится ведь чтобы требования мнемоники соблюдалось и без префикса переопределения сегмента, и тогда вообще претензий быть не может :) lea ecx, dword ptr ds:[ebp*1][dwData] Тогда формально будет адресоваться DS и без префикса переопределения сегмента, подчёркиваю формально т.к. значение сегментного регистра вообще ни как не влияет на то что загрузится в приемник. Но если разбирать modrm как отдельную сущность то при указанном синтаксисе ebp окажется в битовом поле индексного регистра и уже так как базовый регистр просто будет отсутсвовать modrm по умолчанию будет трактоваться декодором как обращающийся к DS. |
|
|
Дата: Окт 30, 2004 17:33:47 The Svin Спасибо за помощь :) Вы очень помогли. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.045 |