странное поведение jwasma

Тема в разделе "WASM.ASSEMBLER", создана пользователем jorikh, 9 окт 2011.

  1. jorikh

    jorikh New Member

    Публикаций:
    0
    хай всем

    есть код написанный для masm-а под вин32 и успешно работающий.
    собираю его jwasm-ом последним, запускаю, эксепшн.
    отлаживаю, и вижу странную штуку:

    есть функция:

    function proc USES edx eax ebx, memaddr:lol: WORD, sz:BYTE, segidx:BYTE

    и есть её вызов:

    invoke function, ebx, ch, 0

    этот вызов jwasm компилит как:

    push 0
    push ebp
    push ebx
    call function

    вместо ch запихивает в стек значение ebp. вопрос - зачем?
     
  2. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    так ecx поставь.
     
  3. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Код (Text):
    1. function proc USES edx eax ebx, memaddr:DWORD, sz:BYTE, segidx:BYTE
    Может лучше без запятой
    Код (Text):
    1. function proc USES edx eax ebx memaddr:DWORD, sz:BYTE, segidx:BYTE
     
  4. jorikh

    jorikh New Member

    Публикаций:
    0
    там стоит именно CH так как параметр 1-байтовый, а в cl находится другая переменная (чтоб не дёргать стек лишний раз).
     
  5. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Вах ... ну прости брат, не знал )))
     
  6. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Это просто ошибка ассемблирования. Байтовые регистры нельзя класть в стек. Только кратные по размеру двум. Код регистра ch -- 5. Код регистра ebp тоже 5. Ассемблер генерирует код 0x55, считая, что 5 в этом коде адресует ch. Хотя процессор и дизассемблер понимают, что это ebp. Короче, это недостаточность проверки аргументов в ассемблере.
     
  7. jorikh

    jorikh New Member

    Публикаций:
    0
    да, видимо мой фолт. тогда не ясно какого хрена масм правильно всё собирал.
     
  8. s_d_f

    s_d_f New Member

    Публикаций:
    0
    масм порой странные вещи выдает из-за высоко-уровневости.
     
  9. Alexpav

    Alexpav Alexei

    Публикаций:
    0
    да. иногда масм выдает действительно странные вещи