|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 10, 2004 12:38:58 Народ, наверно я сошёл сЪ ума, но обойти MASM'овское ограничение немогу. Суть такая. Допустим я работаю с сегментом у которого выравнивание по умолчанию 4 байта и хочу использовать align 16 в нём, он, ессно, ругается. Изменять параметры сегмента ох как не хочется, как тут быть:? P.S. org ($+15)/16 и ему подобное не проходит :( |
|
|
Дата: Мар 10, 2004 12:40:10 И я знаю, что НЕ с ГлАголами пишется отдельно, просто настроение плохое! |
|
|
Дата: Мар 10, 2004 13:17:57 .586 напиши в начала вместо .386 |
|
|
Дата: Мар 11, 2004 02:19:20 Как раз и написано .586p /* по крайней мере на masm 6.11 не работает. Более новые для доса использовать не могу - накладно */ |
|
|
Дата: Мар 11, 2004 17:46:48 [ Kirk: Изменять параметры сегмента ох как не хочется, как тут быть:? ] Переопределить выравнивание сегмента нельзя. Но можно просто завести свой собственный сегмент. ;@echo off ;goto make .386 .model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib mycode SEGMENT PAGE mycode ENDS mycode SEGMENT start: xor eax, eax align 16 xor eax, eax align 64 ret mycode ENDS end start :make set exe=align \masm32\bin\ml /nologo /c /coff %exe%.bat \masm32\bin\link /nologo /subsystem:windows %exe%.obj del %exe%.obj echo. pause Выравнивание 64 благодаря PAGE. Если достаточно 16, то PAGE можно убрать. Сегмент можно слить с дефолтовым .code с помощью ключа merge. |
|
|
Дата: Мар 12, 2004 02:49:17 Спасибо, но больше всего за merge, раньше я долго ломал голову над тем, как слить два сегмента кода с разными выравниваниями :-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069 |