Руководства / книги по устройству памяти и не только?
Здраствуйте уважаемые опытные программисты,
Вопрос не о том, какие книги советуете по программированию и т.д.
Хотелось бы книги / руководства / статьи, рассматривающие вопросы работы и устройства памяти.
Возможно не могу сформулировать вопрос правильно, попробую перечислять темы, про которых хотелось бы знать глубже некуда:
1) Устройство стековой памяти
2) Устройство динамической и вообще, всех видов памятей (только для чтения, константая область и т.д.), впервые о них узнал из книг Г. Саттера.
3) Устройство программы на низком уровне (может и руководство по ОС тоже подойдет, но не знаю с чего начать)
4) Как компилировался первый компилятор :)
5)…
1. What every programmer should know about memory
2. Windows via C++. Part 3. Jeffrey Richter
3. WIndows internals, Chapter 9. Mark Russinovich
Книги Руссиновича и Рихтера есть на русском.
4) Как компилировался первый компилятор :)
— Джек Креншоу. «Давайте создадим компилятор!» Самое то для начала.
— Рави, Сети, Ульман. «Компиляторы. Принципы, технологии и инструментарий.» (2е или 3е издание)
— Кауфман «Языки программирования. Концепции и принципы». Но не для начала.
— Вирт «Построение компиляторов». Тоже не для начала.
На низком уровне программа, например, на языке Си, компилируется в ассемблерный код, у каждого процессора он свой. Самый популярный процессор — Intel x86, потому советую книги по работе процессора и ассемблеру Intel x86, регистры там, команды, и все такое. Правда, какую именно книгу посоветовать, не знаю.
Посмотрите как минимум главу www.plantation-productions.com/Webster/www.artofasm.com/Linux/HTML/Volume2.html из
Art of Assembly Book — более компетентного и доходчивого введения в вопросы архитектуры ПК с позиции программиста я
не встречал. Также можно посоветовать выборочные главы из Брюса Эккеля — его двух книг по C++: «Философия С++. Введение в стандартный С++» и «Философия C++. Практическое программирование».
В этих книгах, где это возможно, Б. Эккель особенно подробно останавливается на некоторых вопросах работы с памятью.
Например, детально описывает процесс передачи по значению больших структур в функции — полезная информация, если
вы хотите представлять, как вы программируете стек, когда работаете на C++.