Assembler. С чего начать?

Aivar
vasek
И можно ли считать все эти FASM-ы, NASM-ы и им подобные машинным языком???
Риторика. Программа Ассемблер и создана, дабы облегчить жизнь пишущему. Ведь гораздо проще запомнить мнемонику, пользоваться метками, другими плюшками в т.ч. и макросами, нежели запоминать шестнадцатеричные (восьмеричные, двоичные...) значения команд, вручную записывать/перемещать массивы данных, прописывать адреса к ним, короче кодить непосредственно в машинном коде.
Всё правильно, но так было с полвека назад. А сейчас правильнее говорить, что Ассемблер создан, чтобы затруднить жизнь пишущему :) Ведь гораздо проще писать на C и т.п, не задумываясь о распределении регистров и прочих плюшках программирования на Ассемблере. А возможность программировать на C сейчас есть всегда. Даже для самого свежеиспечённого микроконтроллера. Об этом заботится фирма-изготовитель этого микроконтроллера, иначе никто его не купит.
akorop, Есть вещи, которые нет (и раньше тоже не было) смысла писать на ассемблере.
Но по-прежнему есть вещи, которые ни на чём другом написать не получится, к примеру, тяжелые вычисления с оптимизацией под определённые наборы инструкций, и некоторые другие куски кода, от которых требуется максимально достижимая производительность на конкретной архитектуре.
кстати про дизассемблирование. Всегда интересно было что он там выводит. К примеру,если дизассемблирую программу,изменю в коде что нибудь,я смогу её изменённый код собрать через nasm ? Или я не совсем правильно понимаю работу дизассемблера
vasek
всегда считал, что машинный язык представляет собой набор простых инструкций - то есть, например, процессор компьютера выполняет программные инструкции, типа - записать число в регистр А, записать число в регистр Б, сравнить содержимое регистров А и Б, если они равны
Это уже ассемблер, а не машинный код.
vasek
Уверен, что это будет простой набор инструкций и + что то другое, но, главное, это все будет не соответствовать программам написанным на FASM и NASM.
Да.
RAMZAY
К примеру,если дизассемблирую программу,изменю в коде что нибудь,я смогу её изменённый код собрать через nasm ?
Да. Дизассемблировать, изменить и собрать обратно - можно(врятли ч/з nasm, у него нет линковщика). Именно так крякуют почти всё коммерческое ПО.
Rarog
Это уже ассемблер, а не машинный код.
Опять уел за мою неточность - да понятно это мне, что машина оперирует только 0 и 1
крякуют - имеется более красивое название занимаются инженерным реверсингом
PS.............а вообще то я не прав, крякают не умехи, а инженерным реверсингом занимаются специалисты - так как снять упаковщик, а уж потом написать генератор, могут только специалисты.
Ошибки не исчезают с опытом - они просто умнеют
vasek
снять упаковщик
можно даже без знания асма снять star Force 5-й вроде как. Если там ВМ не скушала функции исполнительного файла.
Да и на многие протекторы ща есть скрипты снятия) Причем в паблике)

vasek
написать генератор, могут только специалисты.
Именно так.
Natrio
akorop, Есть вещи, которые нет (и раньше тоже не было) смысла писать на ассемблере.
Но по-прежнему есть вещи, которые ни на чём другом написать не получится,
Бывает и такое. Именно поэтому любой вменяемый компилятор позволяет делать ассемблерные вставки или линковать ассемблерные подпрограммы. Но эти фрагменты обычно очень малы. Например, я люблю и нередко использую сопрограммы, которые никак не поддержаны в обычно используемых языках. Приходится или извращаться через longjmp или реализовывать самому ассемблерной вставкой. Но это - исключение; и это десятка два команд максимум.
Natrio
к примеру, тяжелые вычисления с оптимизацией под определённые наборы инструкций, и некоторые другие куски кода, от которых требуется максимально достижимая производительность на конкретной архитектуре.
Очень странные примеры. Разработчик компилятора или какой-то крутой библиотеки этим, конечно, должен быть озабочен, но прикладному программисту таким способом заботиться об эффективности вредно. Лучше об алгоритме подумать тщательнЕе.
Ну на сколько так можно ускорить вычисления? На 20%? Да гори они огнём. Если это офисная задача - подождут: пользователь, который готов секунду (минуту, час, день) ждать, подождёт и 1.2 секунды (минуты, часа, дня). А если это задача реального времени, надо просто мощнее процессор взять и не закладывать бомбу под будущее сопровождение.
dartsergius
можно даже без знания асма снять star Force 5-й вроде как. Если там ВМ не скушала функции исполнительного файла.
Да и на многие протекторы ща есть скрипты снятия) Причем в паблике)
Протектор протектору рознь, одни снимают, другие пишут новые и вклинивают туда всякое нехорошее, такое как ВМ, срытие байтов и т.п. Так что самое сложное сейчас, это именно снятие протектора. А скриптами снимают то, что уже является пройденным этапом - особенно преуспевают в этом китаезы.
PS.........но я чту и уважаю и не нарушаю уголовный кодекс.
Ошибки не исчезают с опытом - они просто умнеют
Rarog
Да. Дизассемблировать, изменить и собрать обратно - можно(врятли ч/з nasm, у него нет линковщика). Именно так крякуют почти всё коммерческое ПО.
чего чего?
теоретически можно, а практически оно потом не соберется или работать не будет как исходный бинарник, дизасемблеры не настолько умны, это инструмент анализа!
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
теоретически можно, а практически оно потом не соберется или работать не будет как исходный бинарник, дизасемблеры не настолько умны, это инструмент анализа!
Да и теоретически не возможно. Дизассемблер только для анализа, ну и редко теста.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.