@Pantene742

Обязательно ли знать ассемблер и архитектуру ЕВМ разработчику C++?

Я так понимаю что начинающему разработчику C++ QT/Win32 необходимо понимать как работает ЭВМ и Операционные системы, драйвера.

Посоветуйте литературу где на доступном языке можно получить необходимые знания.
  • Вопрос задан
  • 422 просмотра
Решения вопроса 2
Абсолютно не обязательно. Если вы знаете C++, вы с легкостью освоите Qt, никакого "глубинного понимания архитектуры" не нужно. Вот если вы собираетесь работать со специфичными фичами Win32, тогда милости просим.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Даже поверхностное понимание ассемблера и архитектуры повышает ваш уровень разработчика. Но оно не является обязательным.

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

Поэтому просто нужно почитать и освоить принципы (то есть поверхностно суть) работы процессора, регистры, такты, машинный код, прерывания . Работа с данными в защищенном режиме и с портами уже будет продвинутая часть. Но попробовать вставить в С++ код небольшую вставку на ассемблере, чтобы оптимизировать какой-то простенький алгоритм, будет полезно для саморазвития.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@abcd0x00
Мне понадобился Asm, когда мне надо было написать программу для игры, чтобы из линукс можно было смотреть количество игроков на сервере (игра под винду).

История

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

Всё было понятно, кроме одного: непонятно было, как клиент игры получает список доступных серверов. Сервер их как-то сжимал или шифровал зачем-то и передавал единственным большим ответом (больше никуда бы они не поместились кроме этого ответа). Такая мелочь всё портила, всё было понятно и до и после кроме того, как получить список серверов, чтобы дальше опрашивать их.

Вся эта логика по расжатию или расшифровке находилась в одной из dll игры (отвечающей за сеть). То есть её надо было продизассемблировать, найти этот участок кода и понять, что там происходит. А ассемблер я тогда не знал, поэтому даже если бы я смог её продизассемблировать, я бы просто не смог понять результат.

Вот такая маленькая хрень всё испортила. Кучу времени потратил на сетевой анализ, а запоролося на такой мелочи - не знал ассемблер.

Так что учи ассемблер, он нужен будет тогда, когда будешь делать что-то реальное (не учебное). Не будешь знать - не будет программы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы