Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Aug 21, 2019 7:38 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 62 posts ]  Go to page Previous 1 2 3 4 5 Next
Author Message
PostPosted: Thu Sep 24, 2015 5:03 pm 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
Pathoswithin wrote:
Может коллизия? Хотя, всё равно не понял..

Опечатка. Суть в том, что все функции должны согласовывать номера регистров, чтобы не использовать одни и те же. Если проект чисто свой без сторонних кусков кода/либ, то тут ещё можно придумать систему (скажем, по тысяче регистров на файл (если в регистр можно засунуть массив)), иначе же будет каша.


Top
   
PostPosted: Thu Sep 24, 2015 5:46 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Исправил много баг. Свел утечку памяти к минимуму. Операции выполняются в 3 раза быстрее, чем в javascript. Добавил функции для получения длины текста, символ из кода ascii, думаю добавитэь разные кодировки, выход из программы с завершением всех созданных процессов.


Top
   
PostPosted: Thu Sep 24, 2015 7:23 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
А у тебя JIT-компиляция планируется? Без неё высокой скорости не добиться.


Top
   
PostPosted: Thu Sep 24, 2015 11:30 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Pathoswithin wrote:
А у тебя JIT-компиляция планируется? Без неё высокой скорости не добиться.

Конечно, но это уже в конечной стадии скорее всего.

Я вот думаю на счет синтаксиса оттолкуться ли от асма?

Code:
#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


Top
   
PostPosted: Fri Sep 25, 2015 2:57 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Организовал вызов функции по адресу

Пример

Code:
#define func1, '%1' // даем знать препроцессору, что func1, как %1
mov func1,1234567 // передаем адрес/число переменной %2, в данном случае адрес функции на который будет сделан вызов
func1 %2 // вызываем функцию func1 с адресом 1234567 и передаем один параметр переменную %2 (автоматически преобразуются данные по типу)


Зачем это нужно? Скоро узнаете 8)


Top
   
PostPosted: Fri Sep 25, 2015 6:48 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Теперь возможна загрузка obj файлов.
Вот пример

Code:
#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
Безымянный.PNG [ 10.14 KiB | Viewed 2775 times ]
Top
   
PostPosted: Sat Sep 26, 2015 2:25 am 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Ура! Появилось возможность создавать первый объект - это окно.

Пример
Code:
object window,%1 // определим переменную 1, как окно
property left,%1,100 // изменим свойство left на 100 для окна
create %1 // создадим окно


Top
   
PostPosted: Sat Sep 26, 2015 3:58 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Оптимизировал еще ВМ. Теперь инкремент команда, которая находиться в 10 000 000 интераций выполняется за 4 секунды, когда в то же время js выполняется тоже самое за 18 сек. на моей машине. 18/4 = 4.5 раза быстрее, когда раньше было 3. Прирост на 1.5 раза.


Top
   
PostPosted: Sat Sep 26, 2015 7:32 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
Что всё равно дофига медленней чем скомпилированный код.

... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?


Top
   
PostPosted: Sat Sep 26, 2015 8:25 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Pathoswithin wrote:
Что всё равно дофига медленней чем скомпилированный код.

... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?


скомпилированный код с динамической типизацией?
Вроде не знаю таких, которые быстрее работать будут.
За все надо платить, за комфорт кодинга платишь скоростью.

P.S. можно прикрутить js, для этого нужно сделать транслятор js в коды для VM. 1 этап когда запускается скрипт транслируется в байт код для ВМ. 2 этап запуск самого байт кода.

Сделаю 2 этап он сложнее чем 1, а там я думаю трансляцию не составит труда написать.
Вот думаю может для ВМ браузер напишу, уж быстрее писаться будет, чем на Си, уж тем более чем на асм.
И при модернизации ВМ модернизируются все проги включающие в эту ВМ.


Top
   
PostPosted: Sat Sep 26, 2015 8:51 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Pathoswithin wrote:
Что всё равно дофига медленней чем скомпилированный код.

... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?

Если сравнить скорость работы скомпилированной на си программы, то она в 100 быстрее получается, но это не интерпретатор и со статической типизацией. Я думаю 100 раз это уже не так много. Правда нет возможно провести эксперемент с java.


Top
   
PostPosted: Sat Sep 26, 2015 11:55 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.
pavelyakov wrote:
скомпилированный код с динамической типизацией?
Вроде не знаю таких, которые быстрее работать будут.
За все надо платить, за комфорт кодинга платишь скоростью.
Несколько лет пытаюсь понять, в чём заключается комфорт от типов данных? Пишу на ассемблере именно потому, что там их нет.


Top
   
PostPosted: Sat Sep 26, 2015 11:59 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Pathoswithin wrote:
Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.
pavelyakov wrote:
скомпилированный код с динамической типизацией?
Вроде не знаю таких, которые быстрее работать будут.
За все надо платить, за комфорт кодинга платишь скоростью.
Несколько лет пытаюсь понять, в чём заключается комфорт от типов данных? Пишу на ассемблере именно потому, что там их нет.

Тем что меньше писать нужно и меньше тратить времени.


Top
   
PostPosted: Sun Sep 27, 2015 12:00 am 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Pathoswithin wrote:
Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.
pavelyakov wrote:
скомпилированный код с динамической типизацией?
Вроде не знаю таких, которые быстрее работать будут.
За все надо платить, за комфорт кодинга платишь скоростью.
Несколько лет пытаюсь понять, в чём заключается комфорт от типов данных? Пишу на ассемблере именно потому, что там их нет.

Вот и остается выбирать или быстродействие, или память.


Top
   
PostPosted: Sun Sep 27, 2015 12:23 am 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Pathoswithin wrote:
Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.

Почитал более подробно про JIT компиляцию, в принципе легче, когда имеешь байт код, который уже есть компилировать. Главное понять принцип как это реализовано.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 62 posts ]  Go to page Previous 1 2 3 4 5 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited