Задать вопрос
@Zailox

Как link`овать fasm + c(++)?

У gcc есть возможность линковки при помощи .ld файла. Т.к. я пишу на fasm, а не gas, хотелось бы его использовать вместе с C (C++, если возможно). Есть ли какие нибудь аналоги этой линковке?

UPD: Нашёл, что можно через gcc, есть у кого нибудь простой пример по типу hello world?
  • Вопрос задан
  • 179 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
я починил эту ос, теперь хотел понемногу добавлять C, т.к. на чистом ассемблере далеко не уйдешь. Если получится запустить хоть Hello, World! - буду очень благодарен

Я положил эту ос на github и приделал к ней Makefile и hello world на C: https://github.com/jcmvbkbc/toster-1388736
Потестировать можно набрав make run и введя команду hello в консоли внутри qemu.

Я, однако, не стал интегрировать этот код на С с кодом на ассемблере. Потому что у кода на ассемблере есть пара проблем:
- код на ассемблере хардкодит координаты бинарников на диске, загружает их в фиксированные адреса в памяти и переходит прямо на них. Это стрёмная практика, я не стану её поощрять.
- этот код 16-битный, для реального режима, можно, конечно, растить его дальше, но куда практичнее было бы переключиться в нормальный защищённый режим, 32- или 64-битный, что одно, что другое не так уж сложно.
- код "ядра" не предоставляет никаких сервисов "приложениям", он только загружает их в память и запускает. Фактически это не ядро а загрузчик для baremetal приложений.

Иными словами, в ответ на вопрос из топика "Как link`овать fasm + c(++)?" скажу, что в данном случае линковать, в смысле используемом в контексте компиляторов, не имеет смысла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы