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

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

Author:  paulcodeman [ Mon Sep 21, 2015 1:35 am ]
Post subject:  Высокоуровневый ассемблер

Начал над разработкой высокоуровневого ассемблера.
Смысл заключается в написании виртуальной машины, которая считывает опкоды и интерпретирует их.
Типизация динамическая.
Вместо регистров 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.
Если есть пожелания / идеи чего добавить, пишите.

Author:  Pathoswithin [ Mon Sep 21, 2015 12:00 pm ]
Post subject:  Re: Высокоуровневый ассемблер

А какая конечная цель? Смесь java с ассемблером? Так там тоже есть байткод.

Author:  paulcodeman [ Mon Sep 21, 2015 12:12 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Pathoswithin wrote:
А какая конечная цель? Смесь java с ассемблером? Так там тоже есть байткод.

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

Author:  punk_joker [ Mon Sep 21, 2015 12:26 pm ]
Post subject: 

А не лучше написать набор макросов для fasm?

Author:  Pathoswithin [ Mon Sep 21, 2015 12:34 pm ]
Post subject:  Re: Высокоуровневый ассемблер

То-есть ты хочешь неслабо пожертвовать скоростью, чтобы уменьшить и без того маленький размер? Мне кажеться, размер то как раз уже всем пофиг, рядом с размерами видео...
Ты уверен, что у тебя хватит энтузиазма и времени сделать большую поддержку ф-ций?

Author:  paulcodeman [ Mon Sep 21, 2015 12:47 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Pathoswithin wrote:
То-есть ты хочешь неслабо пожертвовать скоростью, чтобы уменьшить и без того маленький размер? Мне кажеться, размер то как раз уже всем пофиг, рядом с размерами видео...
Ты уверен, что у тебя хватит энтузиазма и времени сделать большую поддержку ф-ций?

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

Author:  paulcodeman [ Mon Sep 21, 2015 12:48 pm ]
Post subject:  Re:

punk_joker wrote:
А не лучше написать набор макросов для fasm?

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

Author:  Pathoswithin [ Mon Sep 21, 2015 2:13 pm ]
Post subject:  Re: Высокоуровневый ассемблер

А, то-есть уже много наработок. Тогда главный вопрос — почему виртуальная машина, а не компилятор?

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

Pathoswithin wrote:
А, то-есть уже много наработок. Тогда главный вопрос — почему виртуальная машина, а не компилятор?

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

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

Добавил:
1) поддержку меток
2) cmp (сравнение строк, чисел, переменных/ячеек по значению "строгое сравнение" т.е. если тип отличается то false
3) прыжки jmp, je

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


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

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

Пример кода
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 5838 times ]

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

Добавлены константы
Теперь можно еще лучше упрощать код
Пример
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,.. и т.д.

Author:  Artyom [ Tue Sep 22, 2015 5:39 pm ]
Post subject:  Re: Высокоуровневый ассемблер

И надо снова изобретать велосипед. Существует JAVA (не JavaScript) со своим ByteCode, так и портируйте её, -
всем хороша, работает хоть в Windows, хоть Ёща.

Author:  Artyom [ Tue Sep 22, 2015 5:56 pm ]
Post subject:  Re: Высокоуровневый ассемблер

Драйвер PS/2 клавиатуры написанный под абстрактный язык программирования для
виртуальной машины на её языке, которая будет виртуально исполнять то, что должно
выполнять реальное железо, раз в *-нацать быстрее :lol:

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

Artyom wrote:
И надо снова изобретать велосипед. Существует JAVA (не JavaScript) со своим ByteCode, так и портируйте её, -
всем хороша, работает хоть в Windows, хоть Ёща.

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

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