Создание программ под SynapseOS |
[исправить] |
Пример создания приложения "Hello World", используя clang и сисфункцию вывода для
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!
|
|
|
|
Раздел: Корень / Программисту и web-разработчику / C/C++, сборка, отладка |
1.1, Аноним (1), 17:43, 27/07/2022 [ответить]
| +3 +/– |
SynapseOS : CODE_OF_CONDUCT.md есть, значит, взлетит!
| |
1.3, Аноним (3), 16:01, 29/07/2022 [ответить]
| +1 +/– |
Я так понимаю, что пока на стадии DOS под виртуалкой?
Что планируется (графика, 3D/GPGPU, маршрутизация/firewall, многозадачность, POSIX-совместимость)?
| |
1.4, Андруша (?), 11:05, 31/07/2022 [ответить]
| +1 +/– |
Приколько, образовательно, интересный прдход. - А она грузится на реальном железе?... Эт получается к ней нужно бук по асму брать? 🤔
| |
|
2.5, Аноним (5), 00:37, 03/08/2022 [^] [^^] [^^^] [ответить]
| +/– |
Самое интересное что да! В Issues репозитория есть фотографии HP Pavilion dv6
| |
|
1.6, Аноним (-), 11:18, 05/08/2022 [ответить]
| +/– |
Fasm, сисколы принта без длины, чем только не занимаются абы не учиться программировать
| |
|