Есть ли возможность в masm32 получить размер инструкции в байтах

Тема в разделе "WASM.WIN32", создана пользователем Sashasan, 12 ноя 2018.

Метки:
  1. Sashasan

    Sashasan New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2008
    Сообщения:
    23
    Адрес:
    Воронеж
    чтобы подставить директиве ORG
    Байт?=call eax
    ORG $ -байт
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    В масм 32 директива END определяет EP. Что за ORG, это нам не известно, такое было в досе.
     
  3. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.954
    Можно две метки поставить перед вызовом и после и использовать разницу между ними. Можно поверить на слово, что call eax это 2 байта. И наконец инструкции call eax пофигу, по какому адресу она сама и все остальное ассемблируется. Че-то ничего на ум не приходит зачем тебе весь код сдвигать на 2 байта.
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    Код (ASM):
    1. nop
    2. nop
    3. ; dalee vash kod
    это если вам надо сдвинуть.

    А если вы хотите получить размер то делается это так

    Код (ASM):
    1. _delta:
    2. ;vash kod
    3. _gamma:
    4. lea eax, [_gamma]
    5. sub eax, _delta
     
  5. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.954
    По всей видимости ему надо ассемблировать так, будто этого вызова в коде нету, а дальнейший код уже опосля будет сдвинут.

    Как же масм плох, если это делается не вот так :umnik2:
    Код (ASM):
    1. @@:
    2. call eax
    3. org $-@B
     
    Sashasan нравится это.
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    f13nd, можно и так и так, я просто показал логику.
    Я так понял ему надо потом использовать значение. Но если только для org , то может быть. Но тогда какой в этом смысл - инструкция Call с подобным операндом транслируется всегда однозначно и можно сразу сделать типа
    Org 102h )))
    В общем туманный вопрос.
     
    Sashasan нравится это.
  7. Sashasan

    Sashasan New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2008
    Сообщения:
    23
    Адрес:
    Воронеж
    Спасибо!
    а
    TermoSINteZ верно подметил.
    Мне нужна макро функция, которая возвратит процессор масма на инструкцию назад, а т.к. салл может быть и память и регистр нужна макро функция.
    @@:
    call eax
    org $-@B
    Хочу затереть последний вызов салл lala
    Invoke lala,x,y
    Org $-макро функция
     
  8. Sashasan

    Sashasan New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2008
    Сообщения:
    23
    Адрес:
    Воронеж
    Все решилось без такого макроса, но если кто знает хуже не будет :beach: