Предположим, у нас есть простая helloworld
программа. Мы запускаем это так:
> ./helloworld
> Hello, World!
Но что именно здесь происходит? Как на самом деле выполняется программа?
Я знаю, что сначала загрузчик загружает ее в память. Но как? Можно ли сделать это вручную так:
> loader -flags helloworld
А что будет дальше?
Как он узнает, с какой точки должно начаться выполнение?
Где установлен начальный «указатель инструкций» и как он продвигается?
Как он «выгружается» из памяти после завершения выполнения?