В каком смысле?
ну у тебя код без оси?
тогда тебе надо отключить в линкере автоматическое подключение стандартных либ и вручную подключить те которые надо, обычно это -lgcc и несколько crt*.o
Да у меня ничего не подключается
я не вижу -nostdlibs — значит подключается
А я вижу ассемблерный код
но меня терзают смутные сомнения
а это весь код?
так а у тебя binutils+rust, но без gcc?
а ясно понятно
Тут написано «Disassembly of section .flat». Это фасм? Почему не .text?
хм, надо исходники глядеть...
потому что я не указывал section '.text'
по идее тогда уж в .init это сунуть
ибо порядок секций управляется линкер скриптом, а там все неизвестные секции точно не в начало идут
По идее (с тем самым кривым тулчейном), надо писать ld-скрипт, чтобы не гадать и не напороться ни на что потом.
Ну хорошо, сейчас буду
но думаю и стандартный может прокатить
я вот не помню чтобы для i686-elf гайды требовали запиливать ld-скрипт
А мы всё ещё про загрузчик? Если нам надо потом objcopy и вот эти все пляски, лучше скрипт. Если это просто исполняемый файл, то нам и порядок не особо важен, и тогда, конечно, дефолтного скрипта хватит.
а у вас в расте почти вся std доступна ваша без оси?
там в коде достаточно прописать #![no_std]
и её совсем не будет, даже минимума какого-то?
плохо, в стдлибе может быть много полезностей не требующих наличия оси, в этом у вас дела не лучше чем у плюсов
Есть std, а есть core
А ещё у тебя тут в os_start 32-битный код. Ты об этом, конечно, знаешь, и в ассемблерном коде у тебя будет переключение в защищённый режим, так?
У меня везде 32-битный код же
А вот BIOS CSM об этом не знает.
Обсуждают сегодня