|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Eugene Trubenok 2:5058/18.28 10 Jan 2001 14:19:52 To : Vitaly Lugovsky Subject : Си -------------------------------------------------------------------------------- ET>> Подскажите как мне скомпилировать программу на С чтобы получить код без ET>> заголовков, без стандартных библиотек и без другой лабуды. Просто чтобы ET>> был чистый код. Первый байт в выходном файле был первой ассемблерной ET>> командой. По типу ld86 -d. Лучше чтобы полученный объектный файл можно ET>> было прогнать через ld86. VL> То есть, ты хочешь свой собственный бинарный формат придумать, отличный VL> от elf/a.out/и-всего-что-знает-libbfd? А HА ФИГА?!? Hельзя ли пояснить VL> причину VL> столь странных желаниев? Мне надо чтобы gcc скомпилил обычный бинарник, ну что-то типа досовского COM'a, только в защищенном режиме. Hужно мне это потому, что я ОС писать тренируюсь ;) Бут секторы, переключение в защищенный режим я написал на as86. Теперь мне хотелось бы на вызвать функцию написанную на С и дальше продолжать писать на С. Я посмотрел как это сделано у Linus'а. Он использует для передачи управления на С код, GNU ассемблер as. А бинарник без заголовков он делает c помощью objcopy. Я сделал что-то похожее. Теперь меня не устраивают следующие вещи. В гнушном ассемблере нет команд in/out. Как их туда добавить я не знаю. Линковщик ld под глобальные переменные отводит кучу лишнего места. Как мне настроить чтобы у меня, например, была 4-х байтная глобальная переменная, и линковщик отвел бы под нее только 4 байта, а не несколько килобайт. Bye. --- QDed beta-1.4-990224 * Origin: ...None... (2:5058/18.28) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/34033a5cae38.html, оценка из 5, голосов 10
|