Компилирование С-кода для выполнения вне ОС
- Victor Gr.
- Неотъемлемая часть форума
- Сообщения: 891
- Зарегистрирован: 13 авг 2004, 15:39
- Откуда: Минск
- Контактная информация:
Компилирование С-кода для выполнения вне ОС
Ребята, подскажите. А как компилируется Си-код для выполнения вне ОС?
Например, для размещения в области загрузочного сектора, считывания оттуда BIOS-ом и выполнения процессором.
Это какие-то опции компилятора или просто непревращённый ещё в ELF бинарный код?
Например, для размещения в области загрузочного сектора, считывания оттуда BIOS-ом и выполнения процессором.
Это какие-то опции компилятора или просто непревращённый ещё в ELF бинарный код?
Re: Компилирование С-кода для выполнения вне ОС
открой для себя скрипты линковщика и утилиты типа objcopyVictor Gr. писал(а):Ребята, подскажите. А как компилируется Си-код для выполнения вне ОС?
Например, для размещения в области загрузочного сектора, считывания оттуда BIOS-ом и выполнения процессором.
Это какие-то опции компилятора или просто непревращённый ещё в ELF бинарный код?
Код: Выделить всё
# ld --oformat binary boot.o -o boot
вообще, boot-сектор никто на С не пишет, хотя бы потому, что С-компилятор (GCC) не сможет сгенерировать чистый 16 битный код
хак с
Код: Выделить всё
__asm__(".code16");
...
Я так понимаю, вопрос задан общий, а загрузочный сектор бытовых PC -- это только пример?
В общем случае, "ld --oformat binary" -- плохой метод, так как получение предварительно ELF'а, особенно с debug символами, позволяет сохранить все адреса (загрузки и т.д.), а так же использовать source-level отладчик через JTAG, например.
В общем случае, "ld --oformat binary" -- плохой метод, так как получение предварительно ELF'а, особенно с debug символами, позволяет сохранить все адреса (загрузки и т.д.), а так же использовать source-level отладчик через JTAG, например.