Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Oct 19, 2019 11:05 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 62 posts ]  Go to page 1 2 3 4 5 Next
Author Message
PostPosted: Mon Sep 21, 2015 1:35 am 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Начал над разработкой высокоуровневого ассемблера.
Смысл заключается в написании виртуальной машины, которая считывает опкоды и интерпретирует их.
Типизация динамическая.
Вместо регистров eax,...
используется ячейки от 0 до 0xFFFFFFFF.
Они могут содержать (строки/данные, числа) пока что.
Ф-ции файловой системы и многие фичи.
Что уже есть/работает:
Компилятор, пример синтаксиса:

mov %1,0; // положить в ячейку 1, число 0
add %1,1; // суммировать значение в ячейке 1 на 1
console 0,%1; // класс консоль, первый параметр ф-ция, в данном случае 0 => вывести число/строку
console 1; // ждать нажатия кнопки

add %1,'test'; // присоединить к числу/значению в ячейке 1, сроку test
console 0,%1; // вывести число/строку
console 1; // ждать нажатия кнопки

Это все уже компилируется и работает в kolibriOS.
Если есть пожелания / идеи чего добавить, пишите.


Top
   
PostPosted: Mon Sep 21, 2015 12:00 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
А какая конечная цель? Смесь java с ассемблером? Так там тоже есть байткод.


Top
   
PostPosted: Mon Sep 21, 2015 12:12 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Pathoswithin wrote:
А какая конечная цель? Смесь java с ассемблером? Так там тоже есть байткод.

Сделать транслятор к этому ассемблеру, синтаксис будет на подобии JavaScript. Программы получаются несколько байт, но запускаются через интерпретатор. Большая поддержка ф-ций, упрощённая разработка.


Top
   
 Post subject:
PostPosted: Mon Sep 21, 2015 12:26 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
А не лучше написать набор макросов для fasm?

_________________
я лишь учусь


Top
   
PostPosted: Mon Sep 21, 2015 12:34 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
То-есть ты хочешь неслабо пожертвовать скоростью, чтобы уменьшить и без того маленький размер? Мне кажеться, размер то как раз уже всем пофиг, рядом с размерами видео...
Ты уверен, что у тебя хватит энтузиазма и времени сделать большую поддержку ф-ций?


Top
   
PostPosted: Mon Sep 21, 2015 12:47 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Pathoswithin wrote:
То-есть ты хочешь неслабо пожертвовать скоростью, чтобы уменьшить и без того маленький размер? Мне кажеться, размер то как раз уже всем пофиг, рядом с размерами видео...
Ты уверен, что у тебя хватит энтузиазма и времени сделать большую поддержку ф-ций?

Уже есть библеотеки на cmm, которые писал пол года где-то. Также и canvas, который позволяет рисовать без мерцаний, свои gui элементы, правда не все, хочу доделать с поддержкой font редактор. Скорость особо не теряется, попробовать если ручками писать суммирование строк с числами и т.д. больше времени уйдет и больше багов поймать можно.


Top
   
 Post subject: Re:
PostPosted: Mon Sep 21, 2015 12:48 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
punk_joker wrote:
А не лучше написать набор макросов для fasm?

Я хочу сделать быстроту разработки, макросы не решат все проблемы.


Top
   
PostPosted: Mon Sep 21, 2015 2:13 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
А, то-есть уже много наработок. Тогда главный вопрос — почему виртуальная машина, а не компилятор?


Top
   
PostPosted: Mon Sep 21, 2015 2:57 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Pathoswithin wrote:
А, то-есть уже много наработок. Тогда главный вопрос — почему виртуальная машина, а не компилятор?

Хочу чтобы приложения работали не только в Колибри.
Если писать компилятор с динамической типизацией, то приложения будут занимать порядка ~ 40 кб. в обычном hello world. А в серьезных проектах боюсь представить.
Я уже писал транслятор (для динамической типизации) для компилятора Си ktcc. Все бы хорошо, но размер приложений не радовал, так же хотелось чтобы приложения работали не только в Колибри, но и в Windows к примеру или в JavaScript браузере для быстрой отладки.


Last edited by paulcodeman on Mon Sep 21, 2015 3:10 pm, edited 2 times in total.

Top
   
PostPosted: Mon Sep 21, 2015 3:00 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Добавил:
1) поддержку меток
2) cmp (сравнение строк, чисел, переменных/ячеек по значению "строгое сравнение" т.е. если тип отличается то false
3) прыжки jmp, je

Пример
Code:
cmp 'test','test';
je okey;
jmp end;
okey:
console 0,'okey!!';
end:


Выведет
Code:
okey!!


Top
   
PostPosted: Mon Sep 21, 2015 3:51 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Пример кода
Code:
mov %1,0
loop:
console 0,%1
sleep 50
add %1,1
cmp %1,10
je end
jmp loop
end:

Вывод чисел от 0 до 9 с задержкой 50 сотых секунд.


Attachments:
7526142.png
7526142.png [ 6.77 KiB | Viewed 5329 times ]


Last edited by paulcodeman on Tue Sep 22, 2015 1:42 pm, edited 1 time in total.
Top
   
PostPosted: Tue Sep 22, 2015 12:30 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Добавлены константы
Теперь можно еще лучше упрощать код
Пример
Code:
#define print, 'console 0,'
#define getch, 'console 1'
print 'Test:'
getch
print 'Work!!!'


или пример приведенный выше

Code:
#define var1,'%1'

mov var1,0
loop:
console print,var1
sleep 50
add var1,1
cmp var1,10
je end
jmp loop
end:


По умолчанию уже за ранее определены названия:
print, getch, write,.. и т.д.


Top
   
PostPosted: Tue Sep 22, 2015 5:39 pm 
Offline
User avatar

Joined: Mon Jul 25, 2011 6:22 pm
Posts: 93
И надо снова изобретать велосипед. Существует JAVA (не JavaScript) со своим ByteCode, так и портируйте её, -
всем хороша, работает хоть в Windows, хоть Ёща.

_________________
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!


Top
   
PostPosted: Tue Sep 22, 2015 5:56 pm 
Offline
User avatar

Joined: Mon Jul 25, 2011 6:22 pm
Posts: 93
Драйвер PS/2 клавиатуры написанный под абстрактный язык программирования для
виртуальной машины на её языке, которая будет виртуально исполнять то, что должно
выполнять реальное железо, раз в *-нацать быстрее :lol:

_________________
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!


Top
   
PostPosted: Tue Sep 22, 2015 6:01 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 253
Artyom wrote:
И надо снова изобретать велосипед. Существует JAVA (не JavaScript) со своим ByteCode, так и портируйте её, -
всем хороша, работает хоть в Windows, хоть Ёща.

Портировать Java? Вы хоть представляете какой объем работы это занимает? Легче велосипед изобрести, чем портировать java.


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

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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