Пример создания приложения "Hello World", используя clang и сисфункцию вывода для [[https://github.com/0Nera/SynapseOS SynapseOS]].Перед написанием любой программы нужно установить средства сборки.
В Ubuntu:sudo apt install llvm lld
Далее перейдём к теории.
Сисфункции в SynapseOS вызываются через прерывание 0x80.
Регистры сисфункций:
eax - номер сисфункций
ebx - параметр 1
edx - параметр 2
ecx - параметр 3
esi - параметр 4
edi - параметр 5
ebp - параметр 6В eax также идёт результат выполнения.
Пример вызова сисфункции:
mov eax, 42 ; Получаем количество тиков
int 80h ; Вызов прерыванияНас интересует сисфункция под номером 0 - вывод строки в консоль.
На языке С это выглядит так:
int print_str(char *str) {
uint32_t result = 0;
asm volatile("int $0x80"
: "=a"(result) // result = eax (после выполнения)
: "a"(SC_CODE_puts), // eax = SC_CODE_puts(0)
"b"(str) // ebx = str
);
return result;
}
int main() {
return print_str("Hello world!\\n");
}Результат:
Hello world!
На ассемблере FASM:
; Hello World - FASM
format ELF
public main
main:
mov eax, 0 ; 0 - сисфункция
mov ebx, hello ; параметры сисфункции
int 80h
ret
hello db 'Hello world!\\n',0Результат:
Hello world!
URL:
Обсуждается: http://www.opennet.me/tips/info/3208.shtml
SynapseOS : CODE_OF_CONDUCT.md есть, значит, взлетит!
print_str() ожидает char *, но получает конст чар, это фэйл.
Далее, в CoC не отмечены нарушения ПДД. Это преступно, в наше время, игнорировать такой пласт правонарушений. Почему это вдруг о преследовании, угрозах, оскорблениях и тп надо сообщать "лидерам проекта", но о купленном техосмотре нет? Недоработочка
> print_str() ожидает char *, но получает конст чар, это фэйл.Вот они, современные програмюшки, несовпадение типов распарсил,
а нужна ли вообще НЕконстанта в print_str - пофег. :D
>> print_str() ожидает char *, но получает конст чар, это фэйл.
> Вот они, современные програмюшки, несовпадение типов распарсил,
> а нужна ли вообще НЕконстанта в print_str - пофег. :Dкак там, разучился волшебными константами говнокодить? или ещё нет?
Не ожидал здесь тебя увидеть;)
Я так понимаю, что пока на стадии DOS под виртуалкой?Что планируется (графика, 3D/GPGPU, маршрутизация/firewall, многозадачность, POSIX-совместимость)?
Приколько, образовательно, интересный прдход. - А она грузится на реальном железе?... Эт получается к ней нужно бук по асму брать? 🤔
Самое интересное что да! В Issues репозитория есть фотографии HP Pavilion dv6
Fasm, сисколы принта без длины, чем только не занимаются абы не учиться программировать
еще build.py и прочий треш ;)
> еще build.py и прочий треш ;)Build.py выполняет ровно те задачи, которые я ему поставил:
Динамично собирает ядроНе вижу ничего плохого в этом
Чем плох FASM?
У меня не UNIX, имею право делать свои сисколлы, не вижу ничего плохого в сисфункции принта без явного указания длины.
> Чем плох FASM?
> У меня не UNIX, имею право делать свои сисколлы, не вижу ничего
> плохого в сисфункции принта без явного указания длины.Your ideas are really amazing. Really appreciate it.
Сцк, у меня аж встал от слова "Сисфункция" :)))