The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Создание программ под SynapseOS"
Отправлено auto_tips, 27-Июл-22 17:43 
Пример создания приложения "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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, [email protected] (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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