Board.KolibriOS.org
https://board.kolibrios.org/

Высокоуровневый ассемблер
https://board.kolibrios.org/viewtopic.php?f=2&t=3130
Page 3 of 5

Author:  e-andrew [ Thu Sep 24, 2015 5:03 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Pathoswithin wrote:
Может коллизия? Хотя, всё равно не понял..

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

Author:  paulcodeman [ Thu Sep 24, 2015 5:46 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Исправил много баг. Свел утечку памяти к минимуму. Операции выполняются в 3 раза быстрее, чем в javascript. Добавил функции для получения длины текста, символ из кода ascii, думаю добавитэь разные кодировки, выход из программы с завершением всех созданных процессов.

Author:  Pathoswithin [ Thu Sep 24, 2015 7:23 pm ]
Post subject:  Re: Высокоуровневый ассемблер

А у тебя JIT-компиляция планируется? Без неё высокой скорости не добиться.

Author:  paulcodeman [ Thu Sep 24, 2015 11:30 pm ]
Post subject:  Re: Высокоуровневый ассемблер

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

Author:  paulcodeman [ Fri Sep 25, 2015 2:57 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Организовал вызов функции по адресу

Пример

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


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

Author:  paulcodeman [ Fri Sep 25, 2015 6:48 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Теперь возможна загрузка 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 3791 times ]

Author:  paulcodeman [ Sat Sep 26, 2015 2:25 am ]
Post subject:  Re: Высокоуровневый ассемблер

Ура! Появилось возможность создавать первый объект - это окно.

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

Author:  paulcodeman [ Sat Sep 26, 2015 3:58 pm ]
Post subject:  Re: Высокоуровневый ассемблер

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

Author:  Pathoswithin [ Sat Sep 26, 2015 7:32 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Что всё равно дофига медленней чем скомпилированный код.

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

Author:  paulcodeman [ Sat Sep 26, 2015 8:25 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Pathoswithin wrote:
Что всё равно дофига медленней чем скомпилированный код.

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


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

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

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

Author:  paulcodeman [ Sat Sep 26, 2015 8:51 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Pathoswithin wrote:
Что всё равно дофига медленней чем скомпилированный код.

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

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

Author:  Pathoswithin [ Sat Sep 26, 2015 11:55 pm ]
Post subject:  Re: Высокоуровневый ассемблер

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

Author:  paulcodeman [ Sat Sep 26, 2015 11:59 pm ]
Post subject:  Re: Высокоуровневый ассемблер

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

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

Author:  paulcodeman [ Sun Sep 27, 2015 12:00 am ]
Post subject:  Re: Высокоуровневый ассемблер

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

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

Author:  paulcodeman [ Sun Sep 27, 2015 12:23 am ]
Post subject:  Re: Высокоуровневый ассемблер

Pathoswithin wrote:
Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.

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

Page 3 of 5 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/