• Как преобразовать gas (GNU Assembler) в Fasm (flat assembler)?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Так же как и у меня есть java надо написать на lua. Берёшь исходный код, в голове интерпретируешь его, и пишешь новый код.
    Ответ написан
    Комментировать
  • Может кто нибудь подсказать в чем ошибка(nasm)?

    TalismanChet
    @TalismanChet
    Лицо зла
    лучше на фасм перейди. это компилер + линкер под капотом, формат прямо в коде писать можно. А в твоем случае - ну поменяй с win32 на win64.
    Ответ написан
    Комментировать
  • Может кто нибудь подсказать в чем ошибка(nasm)?

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

    @d-stream
    Готовые решения - не подаю, но...
    Сейчас с самомодифицирующимся [машинным] кодом стало заметно похуже. Точнее не сейчас, а примерно со времен protected mode в ключе x86 архитектур: сегмент кода как правило на аппаратном уровне становится защищенным для записи и чтобы все-таки в такие сегменты писать - надо несколько исхитриться, поборов противодействие во первых аппаратной защиты кода, во-вторых управление процессами ос.

    А раньше - да, только не ленивый творил и самораспаковывающиеся/самодешифруемые вариации, когда "волной" коды чуть впереди cs дешифровались по несколько байт, а особый полиморфизм достигался когда народ по своего рода маркерам генерил вариации кода, выполняющие идентичные действия. В основном изгалялись вирусописатели - для начала чтобы сигнатуры не ловились в файлах, потом попозже - в загруженных сегментах. Ну и писатели защит, чтобы было сложнее взломать защиту. Могу ошибаться, но похоже до сих пор хаспы/сентинелы пользуют сходные навыки (что иногда приводит к синему экрану))
    Ответ написан
    Комментировать
  • Получение доступа к регистру rip x86-64 архитектура?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как получить доступ к этому регистру?

    lea (%rip), %rax (в синтаксисе at&t) получает адрес следующей инструкции
    Ответ написан
    2 комментария
  • Возможно ли создание своего типа данных - массива бит?

    @res2001
    Developer, ex-admin
    В п.1 написана какая-то синтаксически не корректная хрень, смысла которой я понять не могу.

    Массив бит или битовое поле можно реализовать, конечно. Фактически это будет массив байт (или любого другого беззнакового целого), можно его спрятать в typedef и реализовать над ним несколько операций отдельными функциями.
    Например в С++ есть специализация std::vector<bool>, которая для экономии памяти использует внутри битовый массив, а не массив bool, как можно было бы подумать.

    Объявляете байт и работаете с отдельными битами с помощью битовых операций. Если есть необходимость в более широком битовом поле, то можно все унифицировать: при инициализации задаете размер битового поля, вычисляете по заданному размеру размер массива (можно использовать uint8_t, uint16_t, uint32_t или uint64_t - любой беззнаковый целочисленный тип оптимальной длинны), выделяете память для массива.
    Операции над битовым полем:
    1. создание/удаление
    2. установить/снять бит по номеру
    3. проверить установлен ли бит по номеру
    4. опционально вычисление количества установленных бит и/или проверка пустое ли битовое поле.

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

    Объявить переменную размером в один бит (или размером не кратным 8 бит) нельзя, потому что в современных компьютерах минимально адресуемая единица памяти - 1 байт. Была бы 1 бит - можно было бы объявлять переменные размером в 1(2,3, 11, ...) бит. Это архитектурное ограничение компьютеров, а не языка программирования.
    Ответ написан
    2 комментария