Forth
http://fforum.winglion.ru/

Forth in QEMU
http://fforum.winglion.ru/viewtopic.php?f=16&t=2412
Страница 1 из 2

Автор:  Mihail [ Пт янв 29, 2010 01:39 ]
Заголовок сообщения:  Forth in QEMU

Встроил Форт в QEMU : http://depositfiles.com/files/mpm81t3la
Можно исследовать и расширить QEMU в рантайме по средствам
встроенного Форта. Функции QEMU могут быть доступны по средствам мап-файла.
В примере TT.F загружается мап-файл и используется функция disas для дизассемблирования.

Исходный текст QEMU c Фортом со всем необходимым для сборки
http://depositfiles.com/files/b7wx1dwnm
Достаточно запустить msys.bat там в каталоге QEMU запустить make
Пока только под видной.

Oдно из первых приложений под новую ОС должен быть эмулятор машины
чтобы использовать приложения других ОС.

Автор:  Гость [ Пт янв 29, 2010 04:22 ]
Заголовок сообщения: 

Класс!
а Как запустить TT.f
и поподробней возможности использования

Автор:  Я_это [ Пт янв 29, 2010 07:38 ]
Заголовок сообщения: 

вас ис дас QEMU?

Автор:  VoidVolker [ Пт янв 29, 2010 11:31 ]
Заголовок сообщения: 

http://ru.wikipedia.org/wiki/QEMU

Автор:  Mihail [ Пт янв 29, 2010 11:46 ]
Заголовок сообщения: 

Гость писал(а):
а Как запустить TT.f


Набрать в командной строке и Enter.
Вообще это СПФ.
Только не в окне виртуальной машины, а в начальном терминале.

Автор:  Гость [ Пт янв 29, 2010 19:11 ]
Заголовок сообщения: 

Mihail писал(а):
Гость писал(а):
а Как запустить TT.f


Набрать в командной строке и Enter.
Вообще это СПФ.
Только не в окне виртуальной машины, а в начальном терминале.


Не работает в экране Firmware.
А что такое окно виртульной машины

Автор:  mOleg [ Пт янв 29, 2010 19:39 ]
Заголовок сообщения: 

да, действительно, можно немного описать, что дает эта работа, что можно сделать. Пару примеров не помешает, имхо.

Автор:  вопрос [ Пт янв 29, 2010 19:54 ]
Заголовок сообщения: 

хорошая работа

добавлено
Ой, вдруг кто-то подумал, что я саму работу оцениваю. Нет, замысел только.

Автор:  Mihail [ Сб янв 30, 2010 01:20 ]
Заголовок сообщения: 

Гость писал(а):
Не работает в экране Firmware.
А что такое окно виртульной машины


Экран Firmware и есть окно виртульной машины.
Форт встроенный в QEMU доступен по средствам терминала куда вывотится:
Код:
SPFOPT  ANS FORTH 94 for Linux
A.Cherezov  http://www.forth.org.ru/
M.Maksimov  http://maksimov435.rtc.neva.ru/  http://www.chat.ru/~mak

Автор:  Mihail [ Сб янв 30, 2010 14:12 ]
Заголовок сообщения: 

mOleg писал(а):
что дает эта работа, что можно сделать.


Само по себе внедрение Форта существенный этап освоения.
Я использовал своего рода корпоративную многозадачность.
ForthStep - процедура переключения имеет вмд
Код:
.globl ForthStep
ForthStep:
   xchgl %eax,seax
   xchgl %ebp,sebp
   xchgl %esp,sesp
   xchgl %edi,sedi
   ret


Со стороны Форта она запускается в SLDKEY? которую вызывают KEY? KEY .
Со стороны QEMU запускается в sdl_refresh в msys\1.0\home\QEMU\sdl.c
Это обработчик событий для виртуальной машины.
Там-же работает драйвер клавиатуры для Форта - if(kbhit())KeyPut(getch());

Для вызова сишных функций из форта на этапе сборки системы,
ее имя нужно прописать в Файле: msys\1.0\home\QEMU\src\global.f
в виде переопределения ABORT. Т.к. исполнять ее нельзя и чтобы
исключить инлайн подстановку при компиляции.
В рантайме системы, сишные функции могут быть доступны по средствам
файла qemu.map. Если у функции есть параметры, перед вызовом нужно
положить параметры на стек возвратов в соответствии с сишной дисциплиной,
затем очистить стек возвратов.

Напирмер:
Вызаыв
void target_disas(FILE *out, target_ulong code, target_ulong size, int flags)
из msys\1.0\home\QEMU\disas.c
Имеет вид:

: REST ( addr len -- )
>R >R
stdout
DUP \ чтобы не испортить EAX
>R disas
DROP \ парамр не возвращается , восстанавливаем EAX
3RDROP ;

Где
: stdout ['] _imp___iob @ 0x20 + ;

_imp___iob взят из msys\1.0\mingw\include\stdio.h
в определении stdout .

Переменная _imp___iob в форте представлена как функция
т.к. в qemu.map процедуы и переменные представлены одинаково.

Т.о. тело QEMU для встроенного Форта - библиотека подпрограмм.
Три этом, доступны все данные в рантайме системы.

Автор:  Mihail [ Пт фев 05, 2010 01:27 ]
Заголовок сообщения: 

http://depositfiles.com/files/k094qr2ct

В примере TT.F
команда ZZ - динамический вывод EIP (можно заменить на любой другой регистр)
команда M> - вызов команды монитора (запускаемого по Ctrl-Alt-2) из базовой консоли с Фортом
M> help
M> index
M> x /10i $eip

В каталоге patch обновления для версии http://depositfiles.com/files/b7wx1dwnm

Автор:  Гость [ Пт фев 05, 2010 16:50 ]
Заголовок сообщения: 

Запуск ReactOs под этой сборкой выдаёт проблемы с определением
драйверов ( дисплея )

P.S. Патчить код QEMU, уже наверное, можно из Форт скрипта вставляя в код
нужной функции адрес перехода на форт слова.
А какая структура emuowf и также его править ( перечитывать и сохранять ) можно из Форт консоли.

Автор:  Mihail [ Сб фев 06, 2010 13:51 ]
Заголовок сообщения: 

Гость писал(а):
Запуск ReactOs под этой сборкой выдаёт проблемы с определением
драйверов ( дисплея )


Это во всех новых версиях qemu. Исходники для qemu-0.9.1-windows мне не найти.
Ниже нет опции -bios.

Автор:  Mihail [ Ср апр 14, 2010 22:07 ]
Заголовок сообщения: 

Отладчик для qemu-system-arm.exe http://depositfiles.com/files/43cquyt5d

Пришлось использовать версию qemu-0.10.6.tar.gz
в версиях выiе вывод перенаправляется в файл STDOUT.TXT

Автор:  Mihail [ Вс ноя 07, 2010 18:28 ]
Заголовок сообщения:  Re: Forth in QEMU

Очередная версия http://depositfiles.com/files/h1zwu3p67
source http://depositfiles.com/files/q65q4gnqv

Может потребоватся http://fpauk.narod.ru/zlib1.dll

Страница 1 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/