• Тернистый путь Hello World

    Вдохновение на написание данной статьи было получено после прочтения похожей публикации для архитектуры x86 [1].


    Данный материал поможет тем, кто хочет понять, как устроены программы изнутри, что происходит до входа в main и для чего всё это делается. Также я покажу как можно использовать некоторые особенности библиотеки glibc. И в конце, как и в оригинальной статье [1] будет визуально представлен пройденный путь. В большинстве своём статья представляет собой разбор библиотеки glibc.


    Итак, начнём наш поход. Будем использовать Linux x86-64, а в качестве инструмента отладки — lldb. Также иногда будем дизассемблировать программу при помощи objdump.


    Исходным текстом будет обычный Hello, world (hello.cpp):


    #include <iostream>
    int main()
    {
            std::cout << "Hello, world!" << std::endl;
    }
    Читать дальше →
    • +74
    • 15,2k
    • 2
  • Как написать свой первый Linux device driver. Часть 2

      Привет хаброчитателям!

      В предыдущей части мы рассмотрели базовые структуры, а также написали инициализацию и удаление устройства.

      В данной статье мы добавим в наш драйвер функции открытия scull_open, чтения/записи scull_read/scull_write и получим первый рабочий драйвер устройства.



      Хочу выразить благодарность всем пользователям, которые прочитали, лайкнули и прокомментировали мою предыдущую статью. Отдельное спасибо за уточнения Kolyuchkin и dlinyj.



      В прошлый раз поступило предложение не рассматривать подробно внутренности каждой функции, поэтому в данной статье я попытаюсь представить их в более широком смысле.

      Сразу к делу!
      Читать дальше →
      • +13
      • 5,8k
      • 3
    Самое читаемое