![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Нужно скомпилить код в бинарник. Не в exe или какой-нибудь elf, а в простой машинный код, без заголовков и прочей ереси. Должно получиться нечто на подобие .COM (только 32-битное). Мне не важно, какой язык, си или делфи. Главное - чтоб поддерживался встроенный ассемблер.
Кто-нибудь знает, чем и как это скомпилить? GCC/TCC/.../хзCC не предлагать, вся эта коллекция ГНУтых компиляторов не знает нормального встроенного ассемблера. Я уже пробовал ими компилить. |
|
#2
|
|||
|
|||
|
масм или тасм
|
|
#3
|
||||
|
||||
|
Цитата:
Последний раз редактировалось Bargest, 28.09.2011 в 20:12. |
|
#4
|
||||
|
||||
|
Код:
gcc --save-temps ... gcc -i ... А зачем тебе, собственно, требуется это действие? Может, есть пути проще? |
|
#5
|
||||
|
||||
|
Я уже через Gcc и Tcc компилил сразу в bin. Все ок, только встроенная асма там, очень мягко выражаясь, идиотская. ИМХО это -
Код:
__asm__ __volatile__(
"rep ; movsl\n\t"
"testb $2,%b4\n\t"
"je 1f\n\t"
"movsw\n"
"1:\ttestb $1,%b4\n\t"
"je 2f\n\t"
"movsb\n"
"2:"
: "=&c" (d0), "=&D" (d1), "=&S" (d2)
:"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
: "memory");А нужно это затем, что я пишу прогу для загрузочной флешки, она должна работать без оси. Писать весь код на асме не охота. Поэтому сейчас асмовый загрузчик и дальше хочу использовать высокоуровневые ЯП. |
|
#6
|
||||
|
||||
|
|
|
#7
|
||||
|
||||
|
Мм. Тут асма конечно получе. Но тоже далеко не фонтан.
Спасибо, M.A.D.M.A.N. Однако жду еще предложений. Это остается на крайний случай. |
|
#8
|
||||
|
||||
|
Не знаю, не знаю. Моё мнение, что MASM достаточно хорошо поддерживает различные конструкции для приближения к языку "высокого" уровня. К тому же имеются сторонние расширения, позволяющие работать с объектами.
|
|
#9
|
||||
|
||||
|
Все-таки приближение к ЯП высокого уровня и ЯП высокого уровня вещи несопоставимые. Все равно ассемблер остается ассемблером.
|
|
#10
|
||||
|
||||
|
Никто и не спорит, но я не уверен, что Вам удастся найти именно то, что ищете.
|
|
#11
|
||||
|
||||
|
Вообщем пока сделал так:
Компилирую через BCC32 (слава богу там встроенный ТАСМ), собираю через TLink32 и добиваю GCC'шным objcopy. Получаю нормальный Си с хорошим встроенным ассемблером. Правда нельзя использовать статические и глобальные переменные, а также первой должна быть функция Start, вызывающая main (потому что main ставится в конце кода при компиляции т.к. он вызывает многие другие функции). Ну, это издержки. ![]() |