Код работает без stdio.h - C (СИ)

Узнай цену своей работы

Формулировка задачи:

функция printf насколько я знаю обьявляется в заголовочном файле stdio.h.. почему она работает если закомментить, или вообще стереть подключение библиотеки stdio.h, (не глупый, убрал все библиотеки так как stdio.h может дергаться в других библиотеках.. вот пример кода.. сейчас еще попробую скрин загрузить..
//#include <stdio.h>
//#include <stdlib.h>
 
int main()
{
    printf("Hello world!\n");
    return 0;
}
// o_O

Решение задачи: «Код работает без stdio.h»

textual
Листинг программы
void _start() {
    /* exit system call */
    asm("movl $1,%eax;"
        "xorl %ebx,%ebx;"
        "int  $0x80"
    );
}

Объяснение кода листинга программы

  1. Код представляет собой функцию с именем _start.
  2. Функция не имеет параметров и не возвращает значение.
  3. Код внутри функции является ассемблером, который выполняет системный вызов для выхода из системы.
  4. Ассемблерный код состоит из трех инструкций.
  5. Первая инструкция movl $1,%eax помещает число 1 в регистр %eax.
  6. Вторая инструкция xorl %ebx,%ebx помещает в регистр %ebx число, которое будет использовано в качестве аргумента для системного вызова.
  7. Третья инструкция int $0x80 выполняет системный вызов с номером 0x80.
  8. Системный вызов № 0x80 - это системный вызов для выхода из операционной системы.
  9. Значение 1 в регистре %eax указывает на корень текущего процесса (процесс, который запустил текущий процесс).
  10. Значение 0 в регистре %ebx указывает на то, что выход из системы должен быть выполнен без принудительного завершения текущей задачи.
  11. Код не использует библиотеку stdio.h.
  12. Код не выводит никакую информацию на консоль.
  13. Код не считывает никакую информацию с консоли.
  14. Код не использует стандартные функции языка C.
  15. Код не выполняет никаких операций ввода-вывода.
  16. Код не использует никакие переменные, кроме регистров процессора.
  17. Код не содержит никаких условных операторов или циклов.
  18. Код не содержит никаких функций или подпрограмм, кроме _start.
  19. Код не содержит никаких комментариев.
  20. Код представляет собой минимальный пример, который можно использовать для создания полностью функционального исполняемого файла без использования каких-либо библиотек или стандартных функций языка C.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы