Мучает меня последнее время проблема: очень хочется иметь данные посреди Цэ кода но каких-то внятных механизмов я не знаю. В асме всё просто: написал dd посреди кода и делай с ним что угодно и никуда он оттуда не денется. А в Си злобный компилер создаёт всякие секции кода и прочую ересь вроде создания переходов с адресом не относительно инструкции а относительно некой базы. Вобщем всеми силами мешает делать базонезависимый код. Помучал гугл некоторое время, но ничего интересного не нашел. Может кто-нибудь подскажет не шибко шаманские способы создания данных посреди кода в Си, пусть и с использованием встроенного асма? Ну и за одно подскажите может быть какие-нибудь команды компилера/прекомпилера которые насильно заставляют компилер генерировать код с ссылками относительно инструкций. Лучше на примере microsoft C 98, если это конечно не фантастика )
Arisu 1) Так например. Код (Text): //code flow //... SomeData: __asm{jmp SomeDataEnds}; __asm{_emit x1}; ... __asm{_emit xn}; SomeDataEnds: //code flow //... 2) По форуму поиск.
Clear_Energy посмотрим meduza у меня часто случаются случаи, когда из за лишней "дубовости" Си приходится блин создавать целый отдельный модуль в котором только одна функция на асме с гулькин нос. Ну по моему это просто некрасиво. _basmp_ а название опции не подскажешь? only ок попробую.
На практике это, как правило, означает одно из двух - человек плохо знает С - человек пытается применять С для вещей, для которых С не предназначен. Что, вобщем, сводится к первому случаю.