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

    @rPman
    Ассемблер это больше философия чем язык программирования. Понимать что это такое и как минимум быть готовым хотя бы читать и понимать листинги, сгенерированные компилятором и отладчиком, нужно для решения низкоуровневых проблем, в т.ч. производительности, когда другие способы уже не помогают.

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

    Области - реверсинженеринг, низкоуровневая оптимизация и низкоуровневая отладка unmanaged кода (т.е. к примеру c,c++). Все это можно встретить и в разработке для микроконтроллеров, и в оптимизации кода для gpu и поиске причины, почему простой цикл кратно работает медленнее из-за вот этой 'безобидной строчки'.

    Но повторюсь, без ассемблера живется неплохо.
    Ответ написан
    9 комментариев
  • Есть ли свободный учебный симулятор простейшего компьютера с ассемблером?

    @rPman
    Почему бы не взять подмножество команд x86 и обучать ассемблеру в какой-нибудь IDE типа SASM? там и отладчик, и отображение регистров, и ввод вывод.
    Ответ написан
  • Как скомпилировать C в FASM?

    @rPman
    Поспрашивай этого перца, часть работы он вроде сделал
    MASM to FASM include file converter V1.06
    inc2inc converts MASM include files to FASM include files. The conversion is limited with function prototypes.


    Еще есть проект, не совсем Си
    https://github.com/bubach/Simple-C

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

    @rPman
    От задачи.
    Если тебе нужна скорость, то придется пожертвовать памятью и создать массив указателей на элементы (т.е. в твоем примере это массив указателей на элементы с индексом 2,3,6,7,8,10).

    Если память жалко, то заплати процессором и храни массив индекс+длина (код при этом будет неадекватно большим, если ты начнешь оптимизировать поиск попадания искомого номера элемента в соответствующий кусок)

    Особенно грустно, если структура кусков и размер массива будет меняться. Первый подход сильно все упростит
    Ответ написан
    1 комментарий
  • Почему ВМ перезагружается?

    @rPman
    разработка это не только код но и настройка окружения и отладка, без этого ты будешь вставать в ступор при любой проблеме
    попробуй настрой dbg
    Ответ написан
    Комментировать
  • Как пользоваться ассемблером Intel для GPU?

    @rPman
    Если я верно понимаю начинать смотреть тут там же есть sdk для загрузки и opencl tool, не удивюсь если все необходимое там уже есть

    можно заглянуть сюда

    зы а вы с какой целью интересуетесь?
    Ответ написан
    Комментировать
  • Как именно работает Сумматор в процессоре? Сигналы же не могут одновременно прийти, то есть будет 2 работы?

    @rPman
    Приходит именно одновременно, даже если есть какие то различие из-за скорости света, времени там прилично, например между тактами.

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

    @rPman
    Ассемблер это язык прямой подмены текст - инструкция, он почти не зависит от компилятора, но зависит от железной архитектуры, под которую пишете (даже разные поколения ядер одного и того же производителя могут иметь разные команды, точнее для совместимости снизу вверх добавляются новые но старые редко удаляются).

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

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

    драйвера, вирусы еще больше хочу понимать как все устроено. Может ос напишу, если смогу
    для этого не нужен ассемблер

    Сейчас низкоуровневым программированием считается язык си C (тот что без плюсов) на нем и пишут и ос и драйвера (кстати тоже не обязательно, и c++ подойдет и pascal, вон rust пиарят во всю для этого), а вирусы вообще пишут на всем что угодно, хоть на visual basic script в офисном документе.
    Ответ написан
    Комментировать
  • Какое место занимает язык ассемблера среди языков программирования?

    @rPman
    Как самый простой с точки зрения реализации и собственно синтаксиса. Проще реально некуда, это почти линейная подмена ключевых слов - бинарными кодами соответствующих команд процессора.

    Кто то конечно вспомнит какой-нибудь brainfuck и прочий трэш, оно действительно синтаксически проще, но мне кажется вас не интересуют такие вырожденные случаи.
    Ответ написан
    Комментировать