Как работает "Hello World" в C

Я ищу месяц для сообщений в блогах о том, как работает программа C. Большинство из них идут как

  • Составители делают это.
  • Линкеры делают это.
  • Программа помещается в память; и стеки, кучи и т.д.

Я думал, что сначала прочитаю о том, как компилятор работает, чтобы понять поток программы в машину. Книга Дракона кажется универсальной. Но, честно говоря, это слишком интенсивно. Сейчас я недостаточно хорош, чтобы пройти через все это.

Итак, я начал читать об оборудовании. Но там тоже объясняются автобусы, сигналы ввода-вывода, структура памяти, пишущий кэш-код и т.д. Но без надлежащих примеров.

Но все же я не мог найти себя удовлетворенным или быть в состоянии полностью визуализировать процесс.

2 часа назад я решил задать этот вопрос. (Поскольку я боюсь Это может быть не полезно для сообщества SO, или вне темы или других категорий, не подлежащих голосованию), и я не узнал ни одной публикации, касающейся это точно. Был один о том, "как компилятор делает компиляцию", но ответы показали, что это слишком широкий вопрос.

Мой вопрос:

Я хотел бы знать, как работает программа C. Если вы не можете прямо сказать мне, переадресовывайте меня в книгу или другую почту на другой веб-сайт, который может дать мне ответ на этот вопрос.

Я здесь, пока не получаю ответ. Скажите мне, если у вас есть предложения относительно этого сообщения. И это не мой первый язык, поэтому, пожалуйста, примите все мои предложения как мягкие и вежливые.

Спасибо.

UPDATE:

Наряду с принятым ответом есть несколько очень хороших ссылок, а также предложения, которые дают частичные ответы или способ продолжить понимание того, что я пытаюсь понять.

Ответы

Ответ 1

Лучший ответ на этот вопрос, безусловно, сделан из книги "Элементы вычислительных систем" Ноама Нисана и Шимона Шокена. Эта книга начинается с самых простых электронных компонентов, собирает их в рабочий процессор, изобретает для него простой язык ассемблера, записывает для этого ассемблер и в конечном итоге показывает вам, как на него могут быть скомпилированы языки высокого уровня. Читая книгу и работая со всеми примерами (которые используют симулятор для аппаратного обеспечения, поэтому семинар не требуется!), Навсегда изменит ваш взгляд на компьютеры; он буквально поймет все от самого низкого до самого высокого уровня и посмотрит, как они работают вместе. Подробнее см. веб-сайт книги.

Ответ 2

Это слишком широкий вопрос (как вы заметили).

Если вы действительно хотите понять снизу вверх - купите OLD-компьютер с 80-го ebay. Sinclair Spectrum/BBC действительно не имеет значения, но убедитесь, что вы получаете множество книг и руководств, которые идут с ним.

Вы узнаете много, потому что эти машины были хорошо документированы, а то, что не было документировано, было обнаружено, а затем задокументировано:)

Они также намного проще, чем современная четырехъядерная многоядерная память. Это будет легко вписаться в вашу голову.

или для современного старта, Arduino или малиновый пирог, возможно.