Компиляторы и не только - PullRequest
       46

Компиляторы и не только

0 голосов
/ 05 февраля 2009

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

Ответы [ 12 ]

4 голосов
/ 05 февраля 2009

Для компиляторов окончательная книга - Книга Дракона , или Принципы разработки компиляторов. Сначала это немного тяжело, но с каждым проходом становится легче. Это классика и должна быть прочитана всеми серьезными студентами по программированию / информатике.

3 голосов
/ 04 марта 2009

Для меня это звучит так, будто ты хочешь получить степень в области компьютерных наук. : -)

3 голосов
/ 05 февраля 2009

Моим первым предложением будет Код , который уже был предложен. Лучшая, но более сложная книга на тему процессоров - Computer Organization & Design от Hennessey & Patterson. Вы можете найти более старую версию на Amazon или Half.com. Они будут намного дешевле и будут иметь в основном ту же информацию.

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

2 голосов
/ 05 февраля 2009

Обычно я не думаю о физике и компиляторах одновременно.

Эта ссылка может заставить вас задуматься.

2 голосов
/ 05 февраля 2009

Самое простое и очень хорошо написанное введение - Код Чарльза Петцольда

альтернативный текст http://ecx.images -amazon.com / images / I / 31t68r9K28L._BO2,204,203,200_PIsitb-sticker-arrow-click, TopRight, 35, -76_AA240_SH20_OU01_.jpg

1 голос
/ 28 мая 2009

Фейнман неплохо разбирается в Физике вычислений.

, которая касается второй части вашего вопроса.

1 голос
/ 05 февраля 2009
1 голос
/ 05 февраля 2009

Я бы предложил изучить достаточно ассемблера , чтобы можно было написать простую Hello World программу на ассемблере.

Это научит вас, как именно процессор работает на уровне регистра и памяти.

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

1 голос
/ 05 февраля 2009

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

Ваш эмулятор не должен быть очень быстрым - попробуйте получить приветственное сообщение C64, и если вы правильно сделали свой код - вы сможете писать и писать базовые программы, чтобы они работали

10 PRINT "DONT LISTEN TO ME - APPLE //E's RULE"

20 GOTO 10

0 голосов
/ 30 мая 2012

Я принял аналогичное решение после прочтения рекомендации Стива Йегге, чтобы узнать о компиляторах. Я действительно наслаждаюсь Элементами Вычислительных систем Нисана и Шокена: Создание Современного Компьютера из Первых Принципов , который является первым учебником, вторым, курсом для одного семестра для новичков или пожилых людей, и третьим, веб-сайт с программным обеспечением для лекций и кросс-платформенного моделирования: http://www1.idc.ac.il/tecs/ (TECS)

Темы идут от NAND (программирование цифровых логических схем в HDL), до триггеров, ALU и регистров, ассемблеров, синтаксического анализа и компиляторов, операционных систем и графических интерфейсов. Вы, учащийся, реализуете каждую из этих тем с помощью симулятора оборудования или программного эмулятора, представленного на веб-сайте. Для меня это праздник человеческой изобретательности, что этот диапазон идей может быть настолько глубоко раскрыт студентами через 3-4 месяца. Один из авторов / профессоров дал Google Tech Talk на эту тему, которую стоит проверить, если у вас есть час, чтобы сэкономить их курс.

Я не могу рекомендовать столь же убедительный ресурс для физики вычислений, но я могу с уверенностью сказать, что первые два основных курса EE моего электротехнического факультета, которые могли бы пройти студенты (одновременно, если они выбрали), были Circuits 1 и Semiconductors 1. Первый касался напряжения, тока, катушек индуктивности, конденсаторов, операционных усилителей и т. Д., А второй - квантовой механики, кристаллов, легирования, носителей заряда и т. Д., А также непосредственно касался физики цифровой обработки и хранения данных. устройства. Для меня трудно представить практическую среду моделирования, такую ​​как TECS, для такой темы, делая ее более подходящей для академического, чем для хобби / профессионального обучения?

...