OSDev
http://osdev.su/

Очередной баг в QEMU
http://osdev.su/viewtopic.php?f=6&t=654
Страница 1 из 1

Автор:  Bargest [ 26 ноя 2012, 14:23 ]
Заголовок сообщения:  Очередной баг в QEMU

Только что наткнулся на тотальный бред. Не знаю как, когда и при каких обстоятельствах, но в куему может не работать xchg rax, r8.
Пример:
Код:
  DebugOut r8, clRed        ; дебаг-вывод
  DebugOut rax, clGreen
  xchg rax, r8                  ; тот самый xchg
  DebugOut r8, clRed
  DebugOut rax, clGreen
  mov rbx, MemDefTab
  call MemFree                 ; освобождение памяти
  mov rax, r8                   ; восстановление rax

Макрос DebugOut просто выводит содержимое регистра выбранным цветом, выводятся числа в столбик.
Вывод:
Вложение:
Комментарий к файлу: Дебаг-вывод
XCHG.png
XCHG.png [ 1.39 КБ | Просмотров: 3359 ]


В дебагАуте багов нет, потому что я его пользую уже больше года и выводил всё, что только можно. На всякий случай, его код:
Код:
macro DebugOut v1, v2=clWhite
{
  push rax rbx rcx r14 rcx
  call GetColor
  xchg [rsp], rcx
  mov  rax, v1
  mov   cl, v2
  mov  r14, SetColor
  call r14
  mov  rcx, rax

  mov  rax, DebugVar
  mov  rbx, [rax]
  mov  r14, 12
  add  [rax], r14
  mov  rax, 300
  mov  r14, RCXOutHex
  call r14

  pop rcx
  call SetColor
  pop r14 rcx rbx rax
}

Как видно, все регистры тут сохранены, а R8 не используется вовсе.
Черт, полностью отпало желание разрабатывать под куему и его аналогами-эмуляторами. 2 часа потратил на поиск в коде ошибки, которой нет. На реальном железе и в VMWare все идеально работает. Жаль только, что на ноутбуке без эмулятора никак.
Куему у меня какая-то старая (та, которая с QEMU-Manager'ом идет, совсем из консоли сидеть с эмулятором как-то не хочется), но все же выпускать программу с ТАКИМИ багами - это не дело.

UPD:
Да, баг нашли и пофиксили:
Цитата:
target-i386: fix xchg rax,r8

только вот в QEMU-Managere версия та, которая была, и обновить ее не так просто.

Автор:  Nable [ 27 ноя 2012, 01:17 ]
Заголовок сообщения:  Re: Очередной баг в QEMU

А как насчёт qemu-kvm? В связи с распространением процов с аппаратной поддержкой виртуализации на такие вещи (эмуляция сравнительно редких инструкций) в qemu забили. Впрочем, там по жизни забивают на то что не нужно для традиционных ОС, ибо скорость нужна (во многих смыслах).

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/