• Тернистый путь 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
    • 21,3k
    • 4