OSDev
http://osdev.ru/

VmWare глючит или я чего-то не так понял в этой жизни?
http://osdev.ru/viewtopic.php?f=6&t=415
Страница 1 из 1

Автор:  ZarathustrA [ 14 май 2011, 16:08 ]
Заголовок сообщения:  VmWare глючит или я чего-то не так понял в этой жизни?

Ситуация такая:

Исходник №1:
...
__asm call KernelInterface::HandleRtSysCall ;
...

Исходник №2:
VOID KernelInterface::HandleRtSysCall(InterruptScope* CONST interruptScope)
{
; // здесь только инструкция ret;
}

на выходе исключение при исполнении инструкции ret;

анализ стека показал, что call KernelInterface::HandleRtSysCall не поместил в стек адрес возврата. Да-да, именно не поместил туда вообще никакого адреса, как при простом jmp.

Причем компилятор сгенерировал для call-а следующий код "E8 58 02 00 00", что вроде как нормальный код для инструкции call.

Причем если ручками запихивать на стек код возврата:
...
__asm push EXIT ;
__asm call KernelInterface::HandleRtSysCall ;

то все работает гуд.

Что вы думаете по этому поводу?

Автор:  qeos [ 19 сен 2011, 11:25 ]
Заголовок сообщения:  Re: VmWare глючит или я чего-то не так понял в этой жизни?

то что перед ret надо восстанавливать указатель стека..
чтото типо:

Код:
leave
ret

Автор:  SII [ 19 сен 2011, 12:27 ]
Заголовок сообщения:  Re: VmWare глючит или я чего-то не так понял в этой жизни?

Восстанавливать надо лишь в случае, если он изменялся. Если подпрограмма целиком написана на ЯВУ (Си++ в данном случае), то это является заботой компилятора.

Автор:  qeos [ 19 сен 2011, 13:15 ]
Заголовок сообщения:  Re: VmWare глючит или я чего-то не так понял в этой жизни?

SII писал(а):
Восстанавливать надо лишь в случае, если он изменялся. Если подпрограмма целиком написана на ЯВУ (Си++ в данном случае), то это является заботой компилятора.

но он же делает ret, а не компилятор? или я чтото не так понял?

Автор:  SII [ 19 сен 2011, 16:36 ]
Заголовок сообщения:  Re: VmWare глючит или я чего-то не так понял в этой жизни?

А фиг его знает. Я лично предположил, что компилятор, и что вся подпрограмма из одного только ret и состоит... А вот если сам, тогда могут быть проблемы, если компилятор настолько туп (или если оптимизация выключена, или ещё что), что сгенерировал код для формирования кадра стека без реальной на то нужды.

Автор:  qeos [ 19 сен 2011, 16:57 ]
Заголовок сообщения:  Re: VmWare глючит или я чего-то не так понял в этой жизни?

SII писал(а):
А фиг его знает. Я лично предположил, что компилятор, и что вся подпрограмма из одного только ret и состоит... А вот если сам, тогда могут быть проблемы, если компилятор настолько туп (или если оптимизация выключена, или ещё что), что сгенерировал код для формирования кадра стека без реальной на то нужды.

попробуй смотреть что он генерит через -save-temps

Автор:  SII [ 19 сен 2011, 18:06 ]
Заголовок сообщения:  Re: VmWare глючит или я чего-то не так понял в этой жизни?

Так не у меня ж проблема :)

Автор:  ZarathustrA [ 19 сен 2011, 18:37 ]
Заголовок сообщения:  Re: VmWare глючит или я чего-то не так понял в этой жизни?

Товарищи, спасибо конечно за активность, но пост был за 14 мая. И даже я, автор этого поста, уже не помню ни сути проблемы ни ее решения.

Автор:  SII [ 19 сен 2011, 19:02 ]
Заголовок сообщения:  Re: VmWare глючит или я чего-то не так понял в этой жизни?

Гы :) самого главного мы и не заметили :)))

Автор:  qeos [ 20 сен 2011, 09:16 ]
Заголовок сообщения:  Re: VmWare глючит или я чего-то не так понял в этой жизни?

ZarathustrA писал(а):
Товарищи, спасибо конечно за активность, но пост был за 14 мая. И даже я, автор этого поста, уже не помню ни сути проблемы ни ее решения.

вопрос не властен во времени.. тема была открыта.. ответов не было.

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