Page 2 of 5
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 7:55 pm
by Leency
0CodErr
Вот это менясмутило
http://prntscr.com/ipqgnr
Там точно про х64 и запуск на Vista/7/10 ничего нет?
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 9:59 pm
by 0CodErr
мвахаха!!!! Ох лол!!! Советую автору сего поделия поучить матчасть для начала. eax на rax он заменил
думает так заработает
Кто не помнит,
ALEXS1983 — это который
http://board.kolibrios.org/viewtopic.ph ... 309#p66309
Leency, там всё та же
SetLDTEntries, которая под
x64 работать не будет.
Leency wrote:Vista/7/10
pavelyakov wrote:Из-за чего с windows 7 и выше не запускается? Это возможно из-за защиты windows?
Насколько я смог нагуглить, это появилось в одном из обновлений безопасности на семёрке.
То есть, теоретически, на каких-то семёрках оно может работать.
Возможно на висте работает.
Мой вариант не использует
SetLDTEntries, и, по идее(если я ничего больше не упустил
) должен на
x64 тоже запуститься.
Хорошо бы проверить
XP 64 bit,
Vista 32 bit и
64 bit.
Kopa wrote:Здесь какое то видео.
В
EMET самом можно галочку просто снять. Но теперь это уже похоже на уровне системы.
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 10:27 pm
by Leency
Понял, давай все же не будем довить на мозоли и так уже потерями Марио и Диамонда.
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 10:29 pm
by Ray
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 10:33 pm
by tsdima
0CodErr wrote:Некоторые приложения пишут\читают изображения "directly to\from LFB" — это тоже не поддерживается.
Пока что в процессе отладки своего эмулятора обнаружил лишь три такие программы, все три в каталоге /kolibrios/games/codemaster
0CodErr wrote:Мой вариант не использует
SetLDTEntries, и, по идее(если я ничего больше не упустил
) должен на
x64 тоже запуститься.
Что-то сомневаюсь я. А как ты собираешься сказать процессору, что ты хочешь запустить 32-битный код?
Вот в Linux-е есть modify_ldt как в 32-битной ОС, так и в её 64-битном варианте. Благодаря чему, я надеюсь, можно будет скомпилить мой эмуль и для 32-битного Linux-а (пока разработка идёт только под 64-битной версией).
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 10:39 pm
by Leency
Windows XP SP3 x32 со всеми обновлениями - kEm РАБОТАЕТ
http://prntscr.com/ipsmpv
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 10:43 pm
by 0CodErr
tsdima wrote:А как ты собираешься сказать процессору, что ты хочешь запустить 32-битный код?
Так же, как и для всех остальных 32-битных программ.
32-битная программа вполне работает и на x64.
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 11:00 pm
by tsdima
0CodErr wrote:32-битная программа вполне работает и на x64
И что, вообще нет отличий?
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 11:11 pm
by 0CodErr
tsdima, ты лучше по-конкретней.
Конечно есть различия.
Я о том, что можно взять, скажем, какой-нибудь 32-битный калькулятор и запустить эту программу на x64, и она запустится и будет работать.
Вопрос в том, какие конкретно различия должны нас интересовать.
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 11:23 pm
by tsdima
0CodErr wrote:"Read File error" — значит, что не загружен файл куда надо(по смещению 0).
У меня аналогично, тоже на х64.
А ReadFile случайно не проверяет указатель на ноль?
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 11:29 pm
by tsdima
0CodErr wrote:Я о том, что можно взять, скажем, какой-нибудь 32-битный калькулятор и запустить эту программу на x64, и она запустится и будет работать.
В том, что ОС имеет поддержку запуска 32-битных программ, я не сомневаюсь. Но, например, в списке задач на x64-битной винде после имени, если это 32-битная программа, указано *32. То есть, отличие в процессах делается неспроста? Хотелось бы знать - зачем, если разницы в исполнении 32/64 нет.
Re: Эмуляция KolibriOS API
Posted: Sun Mar 11, 2018 11:57 pm
by 0CodErr
tsdima wrote:0CodErr wrote:"Read File error" — значит, что не загружен файл куда надо(по смещению 0).
У меня аналогично, тоже на х64.
А ОС какая?
tsdima wrote:А ReadFile случайно не проверяет указатель на ноль?
Вроде не должна. Можно взять
VMMap и посмотреть, что стало с регионом памяти 0..64K. Скорее всего
NtAllocateVirtualMemory не отрабатывает.
Re: Эмуляция KolibriOS API
Posted: Mon Mar 12, 2018 12:10 pm
by tsdima
0CodErr wrote:tsdima, ты лучше по-конкретней.
1. Команды, место которых заняли префиксы REX. А это, на минуточку, INC/DEC r16/32
2. Отрицательное смещение в регистре, типа
На мой взгляд, тут будет адресация не назад, а вперёд на почти 4Gb
3. Опкоды некоторых команд типа AAA, AAS в 64-битном режиме invalid
0CodErr wrote:tsdima wrote:У меня аналогично, тоже на х64.
А ОС какая?
Win 7 x64
Может стоит добавить вывод GetLastError при выводе ошибок?
Да и анализ на ошибку в большем количестве мест, например при маппинге нулевых 64Кб.
Re: Эмуляция KolibriOS API
Posted: Wed Mar 14, 2018 8:08 pm
by 0CodErr
Реализовал поддержку
DrawText.
Для этого был взят необходимый код из ядра
KolibriOS из файлов
font.inc и
parse_fn.inc.
На 99% взятый код остался без изменений.
Были заменены вызовы функций
kernel_free,
kernel_alloc,
syscall_getpixel,
__sys_putpixel
на эмулирующие, которые вызывают функции
Windows.
Так выглядит
tinfo:
Spoiler:
-
tinfo1.PNG (27.37 KiB)
Viewed 11253 times
Для реализации
DrawNumber можно сначала преобразовать число в соответствии с форматом в строку,
а затем передать полученную строку в
DrawText.
Похожим образом сделано в
- KlbrInWin — функция "i40_display_number" в файле "I40EMUL.INC"
- MeOSEmul — функция "func _47 ;///// DRAW NUMBER" в файле "Emul_MeOS.asm"
- а также в ядре KolibriOS — функция "display_number" в файле "kernel.asm"
Также начал реализацию функции
SysFn2:GetKey.
Теперь можно поиграть в некоторые игрушки, например,
Heliothryx,
Arcanii,
Invaders,
Piton(by
Albom),
Donkey(by
Albom).
Работает пример "
{3} GetKey, DrawText" из первого сообщения темы
Delphi7 examples http://board.kolibrios.org/viewtopic.ph ... 469#p68254 можно вводить как английские, так и русские символы при переключении раскладки.
Можно поиграть в игру
ALMAZ:
Spoiler:
-
almaz.PNG (22.26 KiB)
Viewed 11253 times
Re: Эмуляция KolibriOS API
Posted: Wed Mar 14, 2018 9:07 pm
by Leency
Клево, шрифты как раз одно из слабых мест KlbrInWin - т.к. новый большой шрифт не поддерживается.