Опечатка. Суть в том, что все функции должны согласовывать номера регистров, чтобы не использовать одни и те же. Если проект чисто свой без сторонних кусков кода/либ, то тут ещё можно придумать систему (скажем, по тысяче регистров на файл (если в регистр можно засунуть массив)), иначе же будет каша.Pathoswithin wrote:Может коллизия? Хотя, всё равно не понял..
Высокоуровневый ассемблер
Исправил много баг. Свел утечку памяти к минимуму. Операции выполняются в 3 раза быстрее, чем в javascript. Добавил функции для получения длины текста, символ из кода ascii, думаю добавитэь разные кодировки, выход из программы с завершением всех созданных процессов.
Технологии меняют мир, а я - меняю технологии.
А у тебя JIT-компиляция планируется? Без неё высокой скорости не добиться.
Конечно, но это уже в конечной стадии скорее всего.Pathoswithin wrote:А у тебя JIT-компиляция планируется? Без неё высокой скорости не добиться.
Я вот думаю на счет синтаксиса оттолкуться ли от асма?
Code: Select all
#define cls,'console cls'
main:
console print,'Shell v.1 h-help'
console getch,%10
if %10,KEY_ESC
= end
sym %10,%10
if %10,'h'
= help
!= nocmd
jmp main
help:
cls
console print,'Help text '
console getch,%10
cls
jmp main
nocmd:
cls
console print,'No cmd '
sleep 100
cls
jmp main
end:
exit
Технологии меняют мир, а я - меняю технологии.
Организовал вызов функции по адресу
Пример
Зачем это нужно? Скоро узнаете
Пример
Code: Select all
#define func1, '%1' // даем знать препроцессору, что func1, как %1
mov func1,1234567 // передаем адрес/число переменной %2, в данном случае адрес функции на который будет сделан вызов
func1 %2 // вызываем функцию func1 с адресом 1234567 и передаем один параметр переменную %2 (автоматически преобразуются данные по типу)
Технологии меняют мир, а я - меняю технологии.
Теперь возможна загрузка obj файлов.
Вот пример
Замете, очень удобно, зная только название функции и что за аргументы передавать можно вызвать любую функцию, параметры передаются в формате не в stdcall, поэтому в обратном порядке, возможно потом поменяю.
Так же добавил
Специальные переменные, которые содержат путь где находиться виртуальная машина, название файла виртуальной машины, папка где находиться виртуальная машина ( пригодиться для загрузки и установки настроек ), путь/название/папка откуда запущен файл приложения для виртуалки.
P.S. все названия хэшируются, все номера переменных тоже, разрешение коллизий везде, поэтому думаю встроить массивы не составит труда.
Вот пример
Code: Select all
#define init_console, '%1'
#define print, '%2'
dll load,'/sys/lib/console.obj' // загрузить библиотеку
dll function,init_console,'con_init' // загрузить в переменную %1 адрес функции con_init
dll function,print,'con_write_asciiz' // загрузить в переменную %2 адрес функции con_write_asciiz
#define title,'%10'
mov title,'Test'
init_console title,-1,-1,-1,-1
mov %11,'Full path VM: '
add %11,PATH
add %11,'\n'
add %11,'File name VM: '
add %11,FILE
add %11,'\n'
add %11,'Dir name VM: '
add %11,DIR
add %11,'\n'
add %11,'File name apps: '
add %11,SFILE
add %11,'\n'
add %11,'Full path apps: '
add %11,SPATH
add %11,'\n'
print %11' // вызов функции
Замете, очень удобно, зная только название функции и что за аргументы передавать можно вызвать любую функцию, параметры передаются в формате не в stdcall, поэтому в обратном порядке, возможно потом поменяю.
Так же добавил
Специальные переменные, которые содержат путь где находиться виртуальная машина, название файла виртуальной машины, папка где находиться виртуальная машина ( пригодиться для загрузки и установки настроек ), путь/название/папка откуда запущен файл приложения для виртуалки.
P.S. все названия хэшируются, все номера переменных тоже, разрешение коллизий везде, поэтому думаю встроить массивы не составит труда.
- Attachments
-
-
Безымянный.PNG (10.14 KiB)Viewed 10784 times
-
Технологии меняют мир, а я - меняю технологии.
Ура! Появилось возможность создавать первый объект - это окно.
Пример
Пример
Code: Select all
object window,%1 // определим переменную 1, как окно
property left,%1,100 // изменим свойство left на 100 для окна
create %1 // создадим окно
Технологии меняют мир, а я - меняю технологии.
Оптимизировал еще ВМ. Теперь инкремент команда, которая находиться в 10 000 000 интераций выполняется за 4 секунды, когда в то же время js выполняется тоже самое за 18 сек. на моей машине. 18/4 = 4.5 раза быстрее, когда раньше было 3. Прирост на 1.5 раза.
Технологии меняют мир, а я - меняю технологии.
Что всё равно дофига медленней чем скомпилированный код.
... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?
... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?
скомпилированный код с динамической типизацией?Pathoswithin wrote:Что всё равно дофига медленней чем скомпилированный код.
... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?
Вроде не знаю таких, которые быстрее работать будут.
За все надо платить, за комфорт кодинга платишь скоростью.
P.S. можно прикрутить js, для этого нужно сделать транслятор js в коды для VM. 1 этап когда запускается скрипт транслируется в байт код для ВМ. 2 этап запуск самого байт кода.
Сделаю 2 этап он сложнее чем 1, а там я думаю трансляцию не составит труда написать.
Вот думаю может для ВМ браузер напишу, уж быстрее писаться будет, чем на Си, уж тем более чем на асм.
И при модернизации ВМ модернизируются все проги включающие в эту ВМ.
Технологии меняют мир, а я - меняю технологии.
Если сравнить скорость работы скомпилированной на си программы, то она в 100 быстрее получается, но это не интерпретатор и со статической типизацией. Я думаю 100 раз это уже не так много. Правда нет возможно провести эксперемент с java.Pathoswithin wrote:Что всё равно дофига медленней чем скомпилированный код.
... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?
Технологии меняют мир, а я - меняю технологии.
Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.
Несколько лет пытаюсь понять, в чём заключается комфорт от типов данных? Пишу на ассемблере именно потому, что там их нет.pavelyakov wrote:скомпилированный код с динамической типизацией?
Вроде не знаю таких, которые быстрее работать будут.
За все надо платить, за комфорт кодинга платишь скоростью.
Тем что меньше писать нужно и меньше тратить времени.Pathoswithin wrote:Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.Несколько лет пытаюсь понять, в чём заключается комфорт от типов данных? Пишу на ассемблере именно потому, что там их нет.pavelyakov wrote:скомпилированный код с динамической типизацией?
Вроде не знаю таких, которые быстрее работать будут.
За все надо платить, за комфорт кодинга платишь скоростью.
Технологии меняют мир, а я - меняю технологии.
Вот и остается выбирать или быстродействие, или память.Pathoswithin wrote:Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.Несколько лет пытаюсь понять, в чём заключается комфорт от типов данных? Пишу на ассемблере именно потому, что там их нет.pavelyakov wrote:скомпилированный код с динамической типизацией?
Вроде не знаю таких, которые быстрее работать будут.
За все надо платить, за комфорт кодинга платишь скоростью.
Технологии меняют мир, а я - меняю технологии.
Почитал более подробно про JIT компиляцию, в принципе легче, когда имеешь байт код, который уже есть компилировать. Главное понять принцип как это реализовано.Pathoswithin wrote:Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.
Технологии меняют мир, а я - меняю технологии.
Who is online
Users browsing this forum: No registered users and 4 guests