The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Создание программ под 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!
 
25.07.2022 , Автор: Арен Елчинян
Ключи: synapseos, assembler / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / C/C++, сборка, отладка

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (1), 17:43, 27/07/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    SynapseOS : CODE_OF_CONDUCT.md есть, значит, взлетит!
     
     
  • 2.12, швондер (?), 14:21, 31/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    print_str() ожидает char *, но получает конст чар, это фэйл.
    Далее, в CoC не отмечены нарушения ПДД. Это преступно, в наше время, игнорировать такой пласт правонарушений. Почему это вдруг о преследовании, угрозах, оскорблениях и тп надо сообщать "лидерам проекта", но о купленном техосмотре нет? Недоработочка
     
     
  • 3.14, pavlinux (ok), 18:35, 03/09/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > print_str() ожидает char *, но получает конст чар, это фэйл.

    Вот они, современные програмюшки, несовпадение типов распарсил,
    а нужна ли вообще НЕконстанта в print_str - пофег. :D    

     
     
  • 4.15, швондер (?), 15:27, 08/09/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >> print_str() ожидает char *, но получает конст чар, это фэйл.
    > Вот они, современные програмюшки, несовпадение типов распарсил,
    > а нужна ли вообще НЕконстанта в print_str - пофег. :D

    как там, разучился волшебными константами говнокодить? или ещё нет?

     

  • 1.2, NDRAEY Pulsemon (?), 18:12, 27/07/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Не ожидал здесь тебя увидеть;)
     
  • 1.3, Аноним (3), 16:01, 29/07/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я так понимаю, что пока на стадии DOS под виртуалкой?

    Что планируется (графика, 3D/GPGPU, маршрутизация/firewall, многозадачность, POSIX-совместимость)?

     
  • 1.4, Андруша (?), 11:05, 31/07/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Приколько, образовательно, интересный прдход. - А она грузится на реальном железе?... Эт получается к ней нужно бук по асму брать? 🤔
     
     
  • 2.5, Аноним (5), 00:37, 03/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Самое интересное что да! В Issues репозитория есть фотографии HP Pavilion dv6
     

  • 1.6, Аноним (-), 11:18, 05/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Fasm, сисколы принта без длины, чем только не занимаются абы не учиться программировать

     
     
  • 2.7, Аноним (-), 11:20, 05/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    еще build.py и прочий треш ;)
     
     
  • 3.10, 0Nera (ok), 09:53, 09/08/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > еще build.py и прочий треш ;)

    Build.py выполняет ровно те задачи, которые я ему поставил:
    Динамично собирает ядро

    Не вижу ничего плохого в этом

     
  • 2.9, 0Nera (ok), 09:52, 09/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Чем плох FASM?
    У меня не UNIX, имею право делать свои сисколлы, не вижу ничего плохого в сисфункции принта без явного указания длины.
     
     
  • 3.11, ramipaper (ok), 08:12, 16/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Чем плох FASM?
    > У меня не UNIX, имею право делать свои сисколлы, не вижу ничего
    > плохого в сисфункции принта без явного указания длины.

    Your ideas are really amazing. Really appreciate it.

     

  • 1.13, pavlinux (ok), 19:24, 02/09/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сцк, у меня аж встал от слова "Сисфункция" :)))
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру