Имеется некоторый FASM исходник с объявленным в нем несколькими секциями(код,данные,импорты,релоки). Необходимо - вручную задать физическое и виртуальное положение секций(тоесть выровнять их, но сделать это на значение большее чем 8192) Как это можно реализовать?
хм... неужели нет каких либо встроенных средств... может быть тут как-то помогут макросы? дело в том что мне подошла бы к примеру такая схема: - между каждой секцией вставить пустую секцию, состоящую из nop-ов - с помощью макроса(вопрос: возможно ли это?) задать кол-во nop-ов в секции - такое чтобы следующая секция начиналась по определенному адресу и кол-во nop-ов динамически определялось ассемблером в процессе компилляции т.е. сделать так чтобы кол-во nop-ов "само" подстраивалось ассемблером в зависимости от изменений исходного кода "реальных" секции( исходный код стал меньше по размеру - квеличить кол-во nop-ов, исходный код увеличился в размере - уменьшить кол-во nop-ов) В результате бы получилась правильная секция релоков импорта и т.д. как реализовать без правки исходников fasm'a?
не подходит т.к. мне нужна секция релоков, правильная насроенная ассемблером(если собирать вручную то ее придется дополнительно фиксить - короче гемор сплошной)
еще один вопросик... как в fasm'e задать виртуальное и физическое выравнивание секций - т.е. то выравнивание, за которое в PE заголовке отвечают следующие поля: SectionAlignment - виртуальное выравнивание секций в памяти FileAlignment - физическое выравнивание секций в файле также хочу спросить каковы минимально возможные значения данных полей в PE загловке, чтобы приложение оставалось работоспособным(win 9x не инетересует)? З.Ы. выходной формат файла у мну естественно PE
FASM рулез=))))))))))))) Все проблемы решились чтением документации к FASM'у + использование макросов + правка исходников=))) Всем спасибо за участие!
хы... а вот и неверно - щас собрал новую версию fasm'a, пофиксил в коде file alignment и section alignment на 1, и такой файл винда(xp, sp2) запускает нормально и даже не заикается =) прикольно... - тоесть секции стали невыровненными ни в памяти, ни на диске=) Интересно такой файл везде запустится?
задам еще 1 смежный вопрос по fasm'y: существует ли такая директива условной сборки, чтобы в макросе можно было прервать компилляцию и заставить компиллятор вернуть ошибку при настплении определенного условия? з.ы. в доках что-то не нашел, неужели опять в исходниках искать(
Аналог ".ERR" в масме или "#pragma error" в сях? Нету. Но можно что-то типа Code (Text): if failed display 'something wrong here' %%L __err something wrong ; директивы __err нет, но компиляция прерывается. end if