Заметки о том, что ниже libc
Ассемблер, форматы бинарников, ядро Linux и честные бенчмарки. Пишу, когда разобрался в чём-то настолько, чтобы объяснить это себе через полгода.
-
Первый kprobe на eBPF: следим за открытием файлов
bpftrace одной строкой, а потом то же самое на libbpf — и почему аргументы функций ядра не всегда там, где ожидаешь.
-
Почему мой бенчмарк врал на 30%
Turbo Boost, прогрев, соседи по ядру и привычка смотреть на среднее вместо медианы.
-
Минимальный ELF руками: 132 байта и exit(42)
Собираем исполняемый файл без компоновщика: заголовок, один program header и три инструкции.
-
Как на самом деле передаются аргументы в System V AMD64
Регистры, red zone, выравнивание стека и загадочный
alперед вызовом printf.