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

Discussion in 'WASM.ASSEMBLER' started by jorikh, Oct 9, 2011.

  1. jorikh

    jorikh New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2011
    Messages:
    31
    хай всем

    есть код написанный для 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

    Blog Posts:
    0
    Joined:
    Aug 31, 2005
    Messages:
    1,539
    Location:
    Poland
    так ecx поставь.
     
  3. s_d_f

    s_d_f New Member

    Blog Posts:
    0
    Joined:
    May 15, 2008
    Messages:
    342
    Code (Text):
    1. function proc USES edx eax ebx, memaddr:DWORD, sz:BYTE, segidx:BYTE
    Может лучше без запятой
    Code (Text):
    1. function proc USES edx eax ebx memaddr:DWORD, sz:BYTE, segidx:BYTE
     
  4. jorikh

    jorikh New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2011
    Messages:
    31
    там стоит именно CH так как параметр 1-байтовый, а в cl находится другая переменная (чтоб не дёргать стек лишний раз).
     
  5. _sheva740

    _sheva740 New Member

    Blog Posts:
    0
    Joined:
    Aug 31, 2005
    Messages:
    1,539
    Location:
    Poland
    Вах ... ну прости брат, не знал )))
     
  6. Mika0x65

    Mika0x65 New Member

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

    jorikh New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2011
    Messages:
    31
    да, видимо мой фолт. тогда не ясно какого хрена масм правильно всё собирал.
     
  8. s_d_f

    s_d_f New Member

    Blog Posts:
    0
    Joined:
    May 15, 2008
    Messages:
    342
    масм порой странные вещи выдает из-за высоко-уровневости.
     
  9. Alexpav

    Alexpav Alexei

    Blog Posts:
    0
    Joined:
    Nov 6, 2011
    Messages:
    1
    Location:
    Russia
    да. иногда масм выдает действительно странные вещи