Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Низкоуровневое программирование - с чего начать?

123 123 Ученик (102), открыт 2 недели назад
Всем привет! Я заинтересован в низкоуровневом программировании и компьютерной архитектуре, общий вектор движения, который я для себя наметил, - реверс-инжиниринг. Хочу понимать, как от логических схем НЕ, И, ИЛИ и других постепенно прийти к полноценному процессору, а потом и к созданным для этого процессора программам.

На данный момент знаю C++ и Python на уровне, достаточном для написания простенького платформера. Ознакомлен с булевой логикой и системами счисления, в целом хорошие математические познания на уровне программ технических ВУЗов.

Пытался начать с книги "Beginning x64 Assembly Programming: From Novice to AVX Professional", где идет обучение NASM ассемблеру, но там система Linux, который я в целом могу установить на виртуальную машину, которую в свою очередь нужно будет создавать, но не знаю, насколько это целесообразно.

В ответ желательно включить примерно очерченный путь с ссылками на книги/курсы для каждого этапа.
Дополнен 2 недели назад
*Еще раз отмечу, что в ответ желательно ВКЛЮЧАТЬ ссылки на КНИГИ/КУРСЫ для предлагаемых этапов изучения.
Дополнен 2 недели назад
Под "ссылки на книги/курсы" имею ввиду упоминание названий или авторов материалов.
5 ответов
Федор Новиков Искусственный Интеллект (359326) 2 недели назад
Если начинать с цифровых схем, то и надо брать учебник по цифровой технике, разбираться с логическими схемами, арифметикой, триггерами и регистрами, потом переходить к цифровым автоматам (машинам состояния), потом - к простейшим процессорам. Заодно лучше перейти от схемного построения к языкам описания аппаратуры (VHDL, Verilog).
А не лезть сразу в дебри сложных систем, построенных по принципу "чего изволите". Лучше тогда смотреть процессоры ARM и RISC-V.
123 123Ученик (102) 2 недели назад
Хорошо! Можете посоветовать книги/курсы для каждого из описанных вами этапов?
Федор Новиков Искусственный Интеллект (359326) 123 123, для среднего уровня для начала посмотрите статьи на https://iosifk.narod.ru/ , вроде у Каршенбойма были публикации в журналах по цифровой технике, навскидку не помню. По начальному уровню - вузовские учебники по проектированию цифровых устройств.
RobCo Industries Ученик (212) 2 недели назад
Привет, вспоминаю себя на твоем месте дружище.
Я когда был поменьше проектировал свои системы. Я тебе напишу парочку моментов, может тебе чем-то поможет и о чем то скажет. Ответ будет длинным, ожидай.
Григорий Процюк Просветленный (29199) 2 недели назад
С ассемблера на процессоре х86, поискать эмулятор типа протеуса https://youtu.be/O8TNWrE5f5Y
123 123Ученик (102) 2 недели назад
Можете посоветовать еще книги/курсы?
Григорий Процюк Просветленный (29199) 123 123, нет, дано этим не занимался, что-то было в рамках институтского курса, уже не помню.
Влад Шупарев Знаток (335) 2 недели назад
Твой интерес к низкоуровневому программированию и реверс-инжинирингу похвален! Путь от логических вентилей до процессора и обратно к программам действительно увлекателен.

Твой текущий уровень знаний C++, Python и математики - отличная база для старта. Что касается Linux, то да, для работы с NASM он предпочтительнее. Установка на виртуальную машину - хороший вариант, не бойся трудностей!

А теперь давай спланируем твой путь к вершинам низкоуровневого программирования:

Этап 1: Основы цифровой схемотехники и архитектуры компьютера

* Цель: Понять, как из логических элементов строятся схемы, регистры, память, ALU и другие компоненты процессора.
* Материалы:
* Книга: "Цифровая схемотехника и архитектура компьютера" Дэвид Харрис, Сара Харрис. Дает хорошее понимание основ.
* Онлайн-курс: "Computer Architecture" на Coursera (от Princeton University). Более глубокое погружение в тему.

Этап 2: Язык ассемблера и архитектура x86

* Цель: Научиться писать программы на языке ассемблера под архитектуру x86, понять принципы работы процессора.
* Материалы:
* Книга: "Ассемблер для процессоров Intel" Кип Ирвин. Классический учебник по x86 ассемблеру.
* Книга: "Reverse Engineering for Beginners" Денис Юричев. Бесплатная книга, доступная онлайн, которая поможет понять принципы реверс-инжиниринга.

Этап 3: Отладка и реверс-инжиниринг

* Цель: Освоить инструменты отладки, научиться анализировать и понимать код на языке ассемблера.
* Материалы:
* Книга: "Practical Reverse Engineering" Брюс Дэнг, др. Практическое руководство по реверс-инжинирингу.
* Инструменты: IDA Pro (дизассемблер), x64dbg (отладчик), GDB (отладчик).

Этап 4: Операционные системы и низкоуровневое взаимодействие

* Цель: Разобраться, как программы взаимодействуют с операционной системой на низком уровне.
* Материалы:
* Книга: "Современные операционные системы" Эндрю Таненбаум. Фундаментальный труд по операционным системам.
* Книга: "Windows Internals" Марк Руссинович, др. (для Windows) или "Linux Kernel Development" Роберт Лав (для Linux).

Дополнительные советы:*

* Практика: Пиши много кода, экспериментируй, анализируй чужой код.
* Сообщество: Присоединяйся к сообществам по низкоуровневому программированию и реверс-инжинирингу.
* Терпение: Это долгий и непростой путь, но он того стоит!

Удачи в твоих начинаниях!
Matematika ru Мыслитель (7775) 1 неделю назад
Почитайте про горизонтальное, вертикальное, смешанное микропрограммирование.
Похожие вопросы