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 [ 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/ |