Что необходимо знать чтобы заниматся низкоуровневым программированием?

Стоит ли после С++ разбираться с ассемблером для того что бы податся в низкоуровневое програмирывание?

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Если под Win, то чистый Си + API. Большего не понадобиться в обычных задачах.

Но если задача стоит написать драйвер, который делает хук неэкспортируемой API, скрывая адрес перехватчика математическими функциями или двойным трамплином, то без ASM будет тяжко. Да и в отладке без .pdb, С++ не увидишь вообще. Это если ковыряешь не свой софт

Так ведь человек не в reverse engineering решил податься, а в программирование (надеюсь, не вирусов и руткитов, хотя и тут пошла мода батниками и VB шлепать).

Оно-то конечно интересно (мой первый язык), но сейчас в 99.9% случаев нет практической необходимости программировать прямо на ассемблере.

Да и без malware хватает задач в которых пригодится разработка на asm. В Днепропетровске есть компания, где можно и нужно это применять. И задачи там ой какие не тривиальные (ApriorIT привет)))))
А из знаний асма вытекает реверс. Вот уже ресерч модулей от кастомеров, которые надо допилить. У них не всегда хватает ума выслать Debug версию или её просто нет)))

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

это неинтересно, это вредно, это задом наперед. Извращение. :)

Потому что чтение после компилятора ЯВУ равносильно чтению длиннющего резюме, которое по-бырынькому составлено из чужих, и надоевших как реклама, абзацев, методом копи-пэст. В сравнении с чтением томика Чехова или Пушкина, составленных из каких-то несчастных 33 букв и нескольких знаков препинаний.

А зачем? Тогда уже лучше .Net байт код учить — больше пригодится для чтения %)

Вы попробуйте наметить долгоиграющие цели для такого изучения. Могу предположить, например, что когда поймете, какие недостатки у процессоров x86, создадите новую архитектуру процессоров, и не производя их в железе, станете продавать только документацию и лицензии на изготовление, как ARM или MIPS.

В высокоуровневом программировании, ваш потолок это очередная ERP для банка или сетевого магазина... тоска...

А последним пунктом нашего долгосрочного плана будет «Стать властелином галактико»

А что именно вы подразумеваете под низкоуровневым программированием? Написание прошивок, встроенное ПО или взаимодействие с API операционной системы без высокоуровневых библиотек? Прошивки чаще всего пишутся на чистом C. Софт для встроенных систем я делал на Qt (C++). Для взаимодействия с железом (последовательные порты, USB и ТВ-тюнеры) нигде ассемблер не понадобился, хотя я неплохо знаком с ним (x86, ARM).

1) Разбираться скорее нужно с архитектурой какой-либо платформы, чем с ассемблером.

2) Стоит сделать наоборот, разобраться с архитектурой и ассемблером, затем учить С++.

2) Стоит сделать наоборот, разобраться с архитектурой и ассемблером, затем учить С++.

Ну коли уж выучен не забывать же :)

Подписаться на комментарии