Я решил выучить ассемблер. Просто из -за личного интереса.
Поэтому:
1) Скажите какой ассемблер более современный и какой лучше выбрать: fasm, nasm, masm, tasm и т.д.
2) Посоветуйте какие-нибудь ресурсы по изучению: книги, видео, статьи и т. д.
3) И скажите, что нужно знать, в целом, чтобы работать с ассемблером, кроме самого синтаксиса?(ну и + ресурсы по изучение если можно)
Что касается вопроса: "А для чего вы его хотите использовать?" - Заинтересовался системным и низкоуровневым программированием, а в перспективе хочу научиться писать читы(ну и возможно вирусы, хихи)
На счет платформы, то в основном интересует Linux и Windows(но линукс все таки больше)
То, что Вы перечислили, это компиляторы макроассемблера. Сам ассемблер - набор кодов конкркетной архитектуры процессора.
Такчто проще всего начать с процессоров архитееуры CISC. Это в основном 8, 16 и 32 разрядные архитекуры. Архитектура RISC более проста, но и более стожна, за счет большего количества действий, в программировании.
Предлагаю взять что-то из семейства микроконтроллеров mips8, купить набор для разработчика за 1000 рублей и поморгать саетодиодами. Хотя до светодиодов дойти буднт труднл.
Лучшая книга по ассемблеру - Дональд Кнут!
Он придумал простой виртуальный процессор, на основе которого написаны его книги "искусство програмиирования". Есть куча эмуляторов для его архитектуры. Дерзайте!
Сам ассемблер - набор кодов конкркетной архитектуры процессора.
Нетъ - это называется набор инструкций конкретного процессора, a Ассемблер -
is a program that takes basic computer instructions and converts them into a pattern of bits that the computer's processor can use to perform its basic operations.
это программа которая берет набор инструкций и конвертирует их в последовательность бит, которую процессор компьютера может использовать для выполнения своих основных операций. Другими словами ассемблер - это сборщик. А вот язык ассемблера в свою очередь может отличаться синтаксисом например самые популярные из них Intel и AT&T
установите себе вторую операционку типа Колибри, она вся написана на ассемблере, там есть компилятор и т.д. кроме того, найдите пару учебников и справочников по ассемблеру. и начинайте делать пробные небольшие программы. постепенно научитесь!
Не хочу вас расстраивать, но работы для ассемблера ни на виндоуз ни на линуксе нет.
Его ниша сейчас это 8 битные микроконтроллеры типа atmega , dsp, gpu
Асм лучше начинать изучать с микроконтроллеров, и потом уже переходить на что-то более серьезное, сразу задуплить как работает полноценный процессор сложновато будет. Надо сначала надрыгаться ногами 8-ми битных микроконтроллеров. AVR потом 32-х битные ARM. Чтоб хорошо знать АСМ надо железо очень хорошо изучить знать как оно устроено как работает. читать даташиты https://ww1.microchip.com/downloads/en/DeviceDoc/A...
Ну и по электронике книжки разные
а в перспективе хочу научиться писать читы(ну и возможно вирусы, хихи)
На счет платформы, то в основном интересует Linux и Windows(но линукс все таки больше)
Я недавно смотрел статистику ОС Desktop по браузерам. Вобще получается что 75% windows, 15% macos, и только 7% - всякие Unknown + Linux. Вобщем если брать как асм как оружие массового поражения - то поражать особо некого. Кроме того владельцы линуксов - это такие себе ленивые кабанчики. Трояны твои они не откроют все равно. Экзешники не качают. Все сами собирают. Вобщем безсмысленное это дело.
А вот для пользы асм нужен там где есть performance issue и где С++ ник никак не может разобраться почему так.
Еще демки можно писать с 3d. Или игры наподобие MDK. Кто-то в 90х мне говорил что она на Асм написана. Хотя я не верю. Ну вряд-ли. Может какие-то мелкие куски.
mayton2019, да у меня на самом деле уже новый вопрос появился. Вот ассемблер работает на прямую з железом(ну там с процессором, оперативной, и не только, памятью и т.д.) А можно ли вот так же напрямую с железом работать из С/С++?
Я просто так почитал, и вроде бы АСМ код можно в С/С++ прогах писать(естественно не без своих приколов, но тем не менее)
Retr0Hacker, да. В языке Си был inline assembler. Пишешь директиву
__asm__
и погнал лупить мнемоники. Но надо внимательно читать документацию. Это фича каждого конкретного
компиллятора. Gcc/Clang/Vc/Intel могут по разному это видеть. Где-то не поддерживать.
Читать ассемблерный код. Когда научишься с лёгкостью читать, писать тоже сможешь.
Посоветуйте какие-нибудь ресурсы по изучению
Исходники на ассемблере, которые любой компилятор тебе нагенерирует, справочник по инструкциям твоего процессора (например 2й том Intel developer manual) и гугл. Просто бери, читай и разбирайся зачем так.