Показать сообщение отдельно
Старый 27.01.2009, 01:21   #144
satan
Нуждающийся
 
Регистрация: 10.02.2007
Сообщений: 99
Написано 18 полезных сообщений
(для 28 пользователей)
Re: создание MIDletPascal compiler'a

Прива все!!!
abcdef
Дружище... Посмотрел твою модификацию.... Ээээээ... Ты зачем внутренний стек меняешь то? Не надо... Этот стек сформирован для внутренней нашей виртуальной машины...

То есть функция GenOp просто добавляет в массив Code[] команды и параметры для них. Приблизительно после разбора проги получается примерно следущее в стеке

39 10 28 61 28 77 41 3

переводим на полурусский
OPJmp 10 -> Перепрыгнуть через 10 команд
OPLdC 61 -> Загрузить Сhar(букву) A - код 61
OPLdC 77 -> Загрузить Char(букву) F - код 77
OPCall 3 -> Вызвать подпрограмму с номером 3 в IdentTab

Вот внутренний ассемблер и делает перевод в опкод i386 а нам надо просто перевести в опкод Java...

Поэтому стек не надо переделывать, он уже готов...

Нам надо перекроить всего 2 функции
1. AssembleAndLink (Она перекраивает наш стековый байт код в машинный код)
2. В линкере сформировать константный пул из IdentTab
Ну и в конце концов связать пул и код....
(Offline)
 
Ответить с цитированием