Ответы пользователя по тегу Assembler
  • Актуален ли ассемблер на сегодняшний день?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ассемблер полезен при анализе прошивок на безопасность.
    При изучении того как работает софт без исходного кода (обратный инжинеринг)
    и при решении задач интеграции разных слоёв софта.

    Ассемблер также очень близко стоит к разработке компилляторов. И если у вас нет
    соотвествующих знаний то строить свой компиллятор вы не сможете. Или вам нужно
    будет изучать готовые back-ends, virtual-machines.

    Ассемблер помогает при анализе узких мест в коде. В частности например
    векторизация вычислений ставит в первую очередь вопросы на которые ассемблер
    отвечает а ЯВУ - нет.

    Знания ассемблера помогают сделать бинарник компактнее. Это важно при разработке
    встраиваемых систем.
    Ответ написан
    Комментировать
  • Как установить флаги в debug.exe?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Спасибо что пригласил. Но я не большой специалист в ассемблере. Вот посмотри как тут пишут. Может поможет https://stackoverflow.com/questions/1406783/how-to...
    Ответ написан
    7 комментариев
  • Почему после ассемблера учить Си легче?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть две трудности с которыми сталкиваются студенты изучая С. Это адресная арифметика и работа со строками.
    Эти две темы зайдут легко если вы до этого уже знали Ассемблер.

    Но мне в общем кажется странным такая хронология изучения. Какой ВУЗ такое дает? Если вы до этого
    случайно знали Ассемблер - то это удивительный и исключительный факт. Насколько я знаю даже
    безопасники и системотехники не очень изучают asm. Я-бы сказал факультативно.
    Ответ написан
    Комментировать
  • Ошибка fasm ELF64 error: undefined symbol '_start', как мсправить?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот тут опечатка.

    satrt:
    Ответ написан
    Комментировать
  • Как определить размер функции в байтах Машиного кода?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Такой функции скорее всего не существует. Тут как в парадоксе про пудинг. Чтобы узнать хороший он или
    нет - его надо сьесть. Вот чтобы узнать длину машинного кода нужно провести этот код по всем стадиям
    компилляции
    . А судя по внешнему виду это не С++. Это DotNet поэтому здесь будет минимум 2 стадии.
    DotNet => MSIL. И потом уже в машинный код. Подозреваю что длина машинного кода будет
    зависеть от версии DotNet, от разрядности платформы 32/64 и от целевой железной архитектуры
    Intel/ARM e.t.c.

    Вот такое получается уравнение со многими неизвестными. И его решить можно только практически.
    Компиллируем. Смотрим. Считаем. Если нудно считать - автоматизируем подсчет функции.
    Ответ написан
    Комментировать
  • Что можно написать новичку на асм?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если ты новичек - начни с простого. Когда я учился в универе - у меня был просто интерес написать
    графическую библиотеку для SVGA/VGA режимов графики. На дворе стояли 90-е и тогда не было
    никаких ускорителей и видяшки назывались S3/Trident. Вобщем сильно много я не написал.
    Было просто рисование цветных трапеций на экране. И это чудовищно непроизводительно для
    процесса разработки. Любой С++ ник заткнет тебя за пояс по скорости выкатки новых фич.
    А качество кода на выходе у gcc вполне себе хорошее чтобы не найти вообще кейсов где
    человек может лучше написать. Вообще в чем заключается оптимизация на асме? Держать
    в голове карту регистров и помнить какой из них под чего использован. Еще неплохо-бы
    помнить что у тебя в кешах лежит.

    Что еще из простого. Попробуй реши квадратное уравнение на FPU и на SSE. Это разные
    техно-стеки и будет познавательно сравнить какой способ лучше или удобнее.
    FPU - это легаси но он еще поддерживается в железе. Я тоже хотел когда-то написать но бросил
    в силу своей нетерпеливости. Мне было интересно понять насколько FPU близок к языку Forth.

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

    Вобщем брутфорсы и умноженя матриц это очень круто но ту просто попробуй это ПРАВИЛЬНО решить
    на языке высокого уровня и проникнись с сложностью решения. И я думаю на этом этапе ты устанешь
    и не пойдешь дальше. Вообще ассемблер - это язык очень узкого применения и какие-то языковые
    фичи (ООП) в ассемблере уж точно не нужны. Ну по крайней мере они там не имеют какого-то явного
    преимущества.
    Ответ написан
    Комментировать
  • Как управлять значением пикселей на экране в виндовс?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Во времена DOS это работало да. Ты мог писать напрямую в банки видеопамяти старых карточек типа VGA/SVGA.
    Примеры кода для C++ можно найти в книжке Шикина и Борескова по графике. Но я не советую потому что
    не актуально. И современный стек графики чуть длиннее.

    Знание того как работает OpenGL и DirectX - скорее всего тебе не даст полной картины как работает железо.
    Потому что железо NVidia и железо Radeon скорее всего будет сильно отличаться. Как будут обобщены отличия - чорт его знает. Скорее всего через драйвер. Но если ты очень хочешь поработать с пикселами отдельно и быстро
    по посмотри в SDL. Я кстати тоже туда хотел посмотреть на днях. Мне чего-то захотелось температурную
    карту IPv4 адресов нарисовать. Я такую видел образца 2009 года. А тут захотел свою.
    Ответ написан
    5 комментариев
  • Как собрать библиотеку из кода для 16-bit ОС для работы в 32-bit \ 64-bit ОС?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут еще такая тема что на эту задачу трудно написать acceptance criteria. Ну допустим пойдет автор на фриланс. Сделает заказ. Ему скажут готово. Переписал. Он скажет - не работает. А они скажут - пуговицы пришиты нормально.
    Какие претензии? Скользкая это постановка. Вообще надо ставить новую задачу о разработке софта. Это знания из ДОС-овского исходника можно использовать а можно и выкинуть. Но упор здесь должен быть именно на разработку.
    Ответ написан
    Комментировать
  • Как увеличить FPS в системе?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для копирования из временного буффера в видимый, я использовал инструкцию rep movsd, хоть и знаю, что до i286 включительно такой инструкции нет. Вопрос: как повысить число кадров в секунду?

    Без тонкой диагностики нут - нельзя. Я не знаю как в геймдеве но в других отраслях при возникновении проблем самое первое что делают - меряют время. Можно мерять профайлером но это явно не твой вариант.

    Найди себе сверх-точные часы которые меряют наносекунды (ты-же ассемблерщик?) Померяй сколько занимает rep movsd. Меряй не один раз а хотя-б много итераций и бери среднее. Может быть не в этом твоя проблема с fps, а где-то в другом коде.
    Ответ написан
  • Может кто нибудь подсказать в чем ошибка(nasm)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот такие варианты бывают под win:
    win32     Microsoft Win32 (i386) object files
    win64     Microsoft Win64 (x86-64) object files
    Ответ написан
    2 комментария
  • Как организовать массив состоящий из разных участков памяти?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Напоминает попытку построить свой кеш. А зачем топик тегирован Ассемблером? Какая тут нерешаемая
    для ассемблера задача?
    Ответ написан
    Комментировать
  • Как выводить числа на семисегментный дисплей в Microprocesor Simulator 5v32?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Код цифры - в сигналы 7 сегментного индикатора это классическая задача на системотехника.

    Рисуют табличку. Потом минимизируют через карты Карно. Получается 7 булевых функций которые отображают номер в сегменты индикатора.

    Но для нашего случая табличка из 10 цифр сойдёт.
    Ответ написан
    Комментировать
  • Что за странная константа?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это красивое число. Вот так в хексах выглядит 0x40000000.
    Скоре всего это какая-то константа из stdio.h, stdlib.h, time.h
    Ответ написан
  • Хочу написать простенький симулятор процессора для уроков, какую выбрать систему команд?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для проведения уроков хочу написать простенький симулятор процессора

    Нужно делать тот минимум который нужен для уроков. Если например это арифметика - то
    сойдет процессор без регистров. Можно считать что разрабатываем систему команд для
    стековой машины. Как Java.
    Ответ написан
    Комментировать
  • Почему Clang (с -O3) не векторизует данный цикл?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В первом варианте был массив четверок int или массив 128 битных элементов.
    Во втором случае - два независимых массивка 64х битных элементов которые в памяти
    расположены достаточно далеко и для них скорее всего не нашлось такой векторной
    команды которая-бы адресовалась к паре 64 + 64.
    Ответ написан
    9 комментариев
  • Как сделать движение по кругу по нажатия кнопки?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Движение по кругу задается параметрически. Задаешь параметр fi (фи) пробегающий от 0.0 до 2*Pi радиан.
    Далее косинус фи дает тебе иксовую координату. А синус игрековую. Координаты нормированы от -1.0 до 1.0
    и их еще надо умножить на пол поперечника окна и сдвинуть на центр координат окна.

    Как это делается в WinGDI я не помню. Но тригонометрия - это хитрая штука для ассебмлера. И я тебе советую
    сделать макет на языке С и сгенерировать ассемблерный выход и посмотреть что так и как.

    А потом уже интересующие тебе функции перенести в твой исходник.
    Ответ написан
    Комментировать
  • Как выучить язык ассемблера?

    mayton2019
    @mayton2019
    Bigdata Engineer
    а в перспективе хочу научиться писать читы(ну и возможно вирусы, хихи)

    На счет платформы, то в основном интересует Linux и Windows(но линукс все таки больше)


    Я недавно смотрел статистику ОС Desktop по браузерам. Вобще получается что 75% windows, 15% macos, и только 7% - всякие Unknown + Linux. Вобщем если брать как асм как оружие массового поражения - то поражать особо некого. Кроме того владельцы линуксов - это такие себе ленивые кабанчики. Трояны твои они не откроют все равно. Экзешники не качают. Все сами собирают. Вобщем безсмысленное это дело.

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

    Еще демки можно писать с 3d. Или игры наподобие MDK. Кто-то в 90х мне говорил что она на Асм написана. Хотя я не верю. Ну вряд-ли. Может какие-то мелкие куски.
    Ответ написан
  • Как вычисляется 20 битный адрес путем сложения 16 бит адреса сегмента с 16 бит смещением в процессорах Intel 8086?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это проектировалось в 20-м веке. Тогда считалось что 1Мб памяти - это очень много. Вот и была сделана такая странная формула где любая комбинация сегмента + смещения всегда заворачивает вас в этот мегабайт.

    Сегодня нет смысла изучать Intel 8086. Я не знаю что за преподаватель толкает вам такое старье. Это все равно что на уроках химии изучать философский камень или четыре стихии огонь-земля и так далее.
    Ответ написан
  • Как был создан ассемблер?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть догадки, что была какая-то интегральная схема которая считывала данные из памяти, в виде последовательности ASCII кодов,

    Нет. Ты или что-то недочитал или сильно много перечитал.

    Самые первые ЭВМ были стендами с переключателями и лампочками. И чтобы их программировать надо было знать систему команд. То бишь соответсвие положения переключателя со смыслом который она делает. Например 0101 (переключалели вверх-вниз дважды) к примеру несет смысл сложить числа в ячейках 1 и 2 и сохранить результат в ячейке 1. И чтоб не парится сильно - ввели обозначение ADD &1, &x2. Разумеется синтаксис я придумал просто для пример.
    Ответ написан
    3 комментария