LINUX.ORG.RU

Книга про C не для начинающих.

 langc,


3

1

Подскажите какую книгу лучше прочитать дабы лучше понять язык C и устройство ЭВМ. Как работает компилятор, что делает препроцессор, что такое связывание, раннее, позднее, динамическое, символы. Как в ЭВМ происходит выделение памяти, что происходит при вызове функции.

★★★★★

ты K&R и SICP уже прочитал? Вот и прочитай. И примеры выполни

drBatty ★★
()

Randal E. Bryant, David R. O'Hallaron. Computer Systems: A Programmer's Perspective.

Рэндал Э. Брайант, Дэвид О'Халларон. Компьютерные системы: архитектура и программирование.

anonymous
()

Грис Д.Конструирование компиляторов для цифровых вычислительных машин.1975 - книжка не про С, но в ней цинично обнажена подкладка всяческих изысков в языках программирования.

anonymous
()

Expert C Programming: Deep C Secrets

ymn ★★★★★
()

Для понимания устройства компьютера изучай исходники открытой SoC (milkymist, orpsocv2). Для понимания цэ читай его формальную семантику и исходники gcc.

anonymous
()

Из вузовского учебника по теории языков программирования

СПИСОК ЛИТЕРАТУРЫ

Основная литература

1. Ахо А., Лам М., Сети Р., Ульман Д.. Компиляторы: принципы, технологии и инструментарийю — М: «Вильямс», 2008, 768с.
2. Молчанов А. Системное программное обеспечение. — «Питер», 2010, 400с.
3. Свердлов С.З. Языки программирования и методы трансляции. — «Питер», 2007, 637 с.
4. Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений. — М. «Вильямс», 2008, 378с.

Дополнительная литература

1. Ахо А., Ульман Дж.. Теория синтаксического анализа, перевода, компиляции. В 2 т. Т. 1,2. — М.: Мир, 1980.
2. Бек Л. Введение в системное пpогpаммиpование. - М.: Мир, 1988, 448 с.
3. Вирт Н. Алгоритмы и структуры данных. — СПб: «Невский диалект» , 2001, 351 с.
4. Гордеев А.В., Молчанова А.Ю. Системное программное обеспечение. — СПб, «Питер» , 2002, 736 с.
5. Керниган Б., Пайк Р. Практика программирования. — СПб: «Невский диалект», 2001, 380 с.
6. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. — М.: МЦНМО, 1999.
7. Льюис Ф., Розенкpанц Д., Стиpнз Р. Теоpетические основы пpоектиpования компилятоpов. - М.: Мир, 1979, 654 с.
8. Хопкрофт Дж., Мотван Р., Ульман Дж. Введение в теорию автоматов, языков и вычислений. — М.: СПб, Киев, 2002.

CrossFire ★★★★★
()
Ответ на: комментарий от buddhist

Какая разница? Там компилятор языка Си. Довольно таки простой и понятный.

anonymous
()
Ответ на: комментарий от buddhist

И как ты по КиР поймешь устройство ЭВМ и низкоуровневую семантику Си?

anonymous
()

устройство ЭВМ .. что делает препроцессор

любая нормальная книга по ассемблеру + статья What every programmer should know about memory

что происходит при вызове функции

для полноты картины стоит посмотреть что такое 'calling conventions'. Википедии будет достаточно, англоязычной.

что такое связывание, раннее, позднее, динамическое, символы

хз что тут понимаешь в контексте си, мб поможет How To Write Shared Libraries

Как в ЭВМ происходит выделение памяти

+ к первой статье что-то по аллокаторам типа кучи. Мб подойдёт Understanding the heap by breaking it

mashina ★★★★★
()

Ну, если про то, что есть в открытом доступе. Тут смотреть: http://programming-motherfucker.com/become.html

По ассемблеру есть:

https://savannah.nongnu.org/projects/pgubook/ про GAS

http://www.stolyarov.info/books/asm_unix про NASM

https://github.com/fiowro/asm лабы под NASM

Вот кстати http://esyr.org/video/pereslavl.2010/kostjuk.ogv лекция про обучения ассемблеру на линуксах вместо доса (NASM)

Вот еще:

http://www.stolyarov.info/books/osintro Введение в операционные системы

http://www.stolyarov.info/books/unixref Операционная среда ОС UNIX для изучающих программирование

http://ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_программистов_C

http://course.secsem.ru/lections См. Глава 2. Программные уязвимости. Часть 1. Ассемблер, исполнение программ в Linux, GNU binutils и дальше. Есть небольшая ошибка по поводу Linux ABI, там оно вообще-то через регистры

http://io.smashthestack.org:84/ Игра на взламывание, надо на специальный ssh коннектиться, нужно будет делать шелл-коды

http://www.cs.umb.edu/cs341/ какие-то лабы вроде

http://www.mcs.sdsmt.edu/mcgough/teaching/spring13/456/lectures/

Еще б поучить всякие мьютексы, форки, прочее... http://stackoverflow.com/questions/194812/list-of-freely-available-programmin... неплохой списочек. Много вещей есть. Я кстати недавно даже демонстрационный шелл-код сделал, на гитхабе у меня https://github.com/j123123

SZT ★★★★★
()

Чтобы понять, как работает ЭВМ, можно прочесть Structured Computer Organization Таненбаума. В пятом издании есть приложение про асм, кстати, кроме того, что в самой книжке очень много годных примеров. Да и вообще, книжка годная, рекомендую.

cdshines ★★★★★
()
Последнее исправление: cdshines (всего исправлений: 1)

Ответы на все твои вопросы есть у Эндрю свет-Таненбаума в книжке про устройство операционных систем.

anonymous
()

человек спросил где узнать про стэк и регистры, а ему сразу весь университетский силлабас насрали. Зачот! Уж без Кормена и автоматов Си не понять! И регистры не доступны для понимания, и кэш, без всех этих священных книг. Пусть человек читает слайды с лекций, нечего забивать чердак ненужным хламом.

nokachi
()
Ответ на: комментарий от nokachi

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

anonymous
()
Ответ на: комментарий от nokachi

Я подумывал о том, чтобы предложить clang, но если рассматривать компиляцию только Си, то gcc все же проще для понимания.

anonymous
()
Ответ на: комментарий от Deleted

Тормоз пришел. Иди дальше жабу неосиливать, тормоз.

Ассемблер - это уже очень высокий уровень. Надо сначала архитектуру осилить, а потом уже в ассемблер лезть.

anonymous
()
Ответ на: комментарий от Deleted

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

anonymous
()
Ответ на: комментарий от anonymous

Хе-хе, шагай, не загораживай солнце))

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.