Исключение #06

Assembler programming questions
  • А в остальных регистрах чего?
  • Ложная тревога. С кодом все в порядке.
    Ошибка возникает только в bochs, в qemu и на реальном железе все работает. Хотя раньше и bochs работал.
    Что в других регистрах я не знаю. Я переписал то что было на доске отладки, сам отладчик не запускал.

    ..bw
  • bw
    Флаги не требуется предварительно установить в нужное состояние?
  • Какие флаги? Дело в том что я здорово подзабыл ассемблер и возможно что-то упускаю из виду.

    ..bw
  • bw
    Перед использованием префикса rep обычно итспользуют cld, или другие команды для установки значально нужного состояния флагов.
  • Вспомнил что к чему. Я почему то перепутал последнюю команду с разновидностью ret :-).
    Но в любом случае, разве исключение 06 не означает неизвестный opcode, т.е. максимум что можно было получить здесь это что то вроде AccessViolation (0E, если не ошибаюсь). Разве не так?

    ..bw
  • bw
    Неисповедимы пути... программистов Вochs. :-)
  • bw
    Есть такая вещь, как инструкции SSE. Опкоды многих из них начинаются с F3 0F, и F3 здесь не означает rep. mtdbg про SSE знает ещё довольно мало и дизассемблирует неправильно.
    "F3 0F 7E 00" = "movq xmm0, qword [eax]", к примеру; "0F 7E 00" = "movd dword [eax], mm0".
    KlbrInWin, который эмуляцией процессора вообще не занимается, сбрасывает все проблемы на процессор, который SSE прекрасно исполняет. А вот эмулятор Bochs (особенно старые версии, вроде бы сейчас SSE поддерживается, хотя не уверен) может запросто фолтить с #UD.
    Ушёл к умным, знающим и культурным людям.
  • Спасибо за развернутый ответ. Что такое sse я знаю :-).
    Код я смотрел qview 2.91, возможно он тоже не работает с этими опкодами.

    ..bw
  • Who is online

    Users browsing this forum: No registered users and 9 guests