gcc -v main.c
и посмотреть, что GCC использует для линковки. Там будет что-нибудь вроде:$ ld -L/usr/lib/gcc/x86_64-linux-gnu/6
-L/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu
-L/usr/lib/gcc/x86_64-linux-gnu/6/../../../../lib -L/lib/x86_64-linux-gnu
-L/lib/../lib -L/usr/lib/x86_64-linux-gnu
-L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/6/../../..
-m elf_x86_64
-dynamic-linker /lib64/ld-linux-x86-64.so.2
-pie /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/Scrt1.o
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/crti.o
/usr/lib/gcc/x86_64-linux-gnu/6/crtbeginS.o
main.o -lgcc -lc
/usr/lib/gcc/x86_64-linux-gnu/6/crtendS.o
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/crtn.o
Как этот поганный компьютер понимает код ассамблера
если он тоже имеет инструкции из БУКВ
получается для него тоже нужен компилятор
получается он обращается к API - процессоа
тогда откуда оно там появилось на чем написано, как написано