Пояснения:
сборка описана в readmerus.txt
----
поправил индексацию массивов, т.е. в паскале стартовый индекс массива может быть любым, за счет того что после вычисления индекса элемента из него вычитается стартовый индекс.
Если начальный индекс = 0, то его можно исключить, что я и сделал, тем более что всегда стараюсь чтоб массив начинался с нуля
-------
синтаксис inline:
__
1-я модификация: inline(b : byte); - прямая запись байта в конструируемый код.
__
2-я модификация: inline(type_str, param1_str, param2_str, param3_str : string); - конструктор указателя на метод или поле в константном пуле, все параметры должны быть строками текста, (строковые переменные не допускаются).
где type_str:
"getstatic" получение статического поля класса
"putstatic" установка статического поля в классе
"getfield" перенос поля из объекта
"putfield" установка поля в объекте
"invokevirtual" вызывает метод экземпляра, основываясь на типе времени выполнения
"invokenonvirtual" вызывает метод экземпляра, основываясь на не виртуальном типе
"invokestatic" вызов метода класса (статического метода)
____
var
myint : integer;
begin
//myint:=10;
inline(16); // bipush;
inline(10); // byte
inline('putstatic','M','myint','I') ;
//myint:=getWidth;
inline('getstatic', 'M', 'I', 'Ljavax/microedition/lcdui/Image;');
inline('invokevirtual', 'javax/microedition/lcdui/Image', 'getWidth', '()I');
inline('putstatic','M','myint','I') ;
__
можно писать любой java-байт-код, оперируя параметрами стека, только если его получать в MidletPascal'е, то стек нужно приводить под известные в MP типы.
__
если указывать произвольные методы, то скорее всего верификатор MP будет, выдавать ошибки, но файл "M.class" будет создан.
---
для анализа программ удобно использовать java-декомпилер "forum.boolean.name\MidletPascal\Основной Форум\Создание MidletPascal compiler'а\JD.exe", просматривая как собраны команды, и какие у них ,байт-коды