Начал над разработкой высокоуровневого ассемблера.
Смысл заключается в написании виртуальной машины, которая считывает опкоды и интерпретирует их.
Типизация динамическая.
Вместо регистров 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.
Если есть пожелания / идеи чего добавить, пишите.
Высокоуровневый ассемблер
-
Технологии меняют мир, а я - меняю технологии.
А какая конечная цель? Смесь java с ассемблером? Так там тоже есть байткод.
Сделать транслятор к этому ассемблеру, синтаксис будет на подобии JavaScript. Программы получаются несколько байт, но запускаются через интерпретатор. Большая поддержка ф-ций, упрощённая разработка.Pathoswithin wrote:А какая конечная цель? Смесь java с ассемблером? Так там тоже есть байткод.
Технологии меняют мир, а я - меняю технологии.
А не лучше написать набор макросов для fasm?
to infinity and beyond
То-есть ты хочешь неслабо пожертвовать скоростью, чтобы уменьшить и без того маленький размер? Мне кажеться, размер то как раз уже всем пофиг, рядом с размерами видео...
Ты уверен, что у тебя хватит энтузиазма и времени сделать большую поддержку ф-ций?
Ты уверен, что у тебя хватит энтузиазма и времени сделать большую поддержку ф-ций?
Уже есть библеотеки на cmm, которые писал пол года где-то. Также и canvas, который позволяет рисовать без мерцаний, свои gui элементы, правда не все, хочу доделать с поддержкой font редактор. Скорость особо не теряется, попробовать если ручками писать суммирование строк с числами и т.д. больше времени уйдет и больше багов поймать можно.Pathoswithin wrote:То-есть ты хочешь неслабо пожертвовать скоростью, чтобы уменьшить и без того маленький размер? Мне кажеться, размер то как раз уже всем пофиг, рядом с размерами видео...
Ты уверен, что у тебя хватит энтузиазма и времени сделать большую поддержку ф-ций?
Технологии меняют мир, а я - меняю технологии.
Я хочу сделать быстроту разработки, макросы не решат все проблемы.punk_joker wrote:А не лучше написать набор макросов для fasm?
Технологии меняют мир, а я - меняю технологии.
А, то-есть уже много наработок. Тогда главный вопрос — почему виртуальная машина, а не компилятор?
Хочу чтобы приложения работали не только в Колибри.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.
Технологии меняют мир, а я - меняю технологии.
Добавил:
1) поддержку меток
2) cmp (сравнение строк, чисел, переменных/ячеек по значению "строгое сравнение" т.е. если тип отличается то false
3) прыжки jmp, je
Пример
Выведет
1) поддержку меток
2) cmp (сравнение строк, чисел, переменных/ячеек по значению "строгое сравнение" т.е. если тип отличается то false
3) прыжки jmp, je
Пример
Code: Select all
cmp 'test','test';
je okey;
jmp end;
okey:
console 0,'okey!!';
end:
Code: Select all
okey!!
Технологии меняют мир, а я - меняю технологии.
Пример кода
Вывод чисел от 0 до 9 с задержкой 50 сотых секунд.
Code: Select all
mov %1,0
loop:
console 0,%1
sleep 50
add %1,1
cmp %1,10
je end
jmp loop
end:
- Attachments
-
-
7526142.png (6.77 KiB)Viewed 18606 times
-
Last edited by paulcodeman on Tue Sep 22, 2015 1:42 pm, edited 1 time in total.
Технологии меняют мир, а я - меняю технологии.
Добавлены константы
Теперь можно еще лучше упрощать код
Пример
или пример приведенный выше
По умолчанию уже за ранее определены названия:
print, getch, write,.. и т.д.
Теперь можно еще лучше упрощать код
Пример
Code: Select all
#define print, 'console 0,'
#define getch, 'console 1'
print 'Test:'
getch
print 'Work!!!'
Code: Select all
#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,.. и т.д.
Технологии меняют мир, а я - меняю технологии.
И надо снова изобретать велосипед. Существует JAVA (не JavaScript) со своим ByteCode, так и портируйте её, -
всем хороша, работает хоть в Windows, хоть Ёща.
всем хороша, работает хоть в Windows, хоть Ёща.
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!
Драйвер PS/2 клавиатуры написанный под абстрактный язык программирования для
виртуальной машины на её языке, которая будет виртуально исполнять то, что должно
выполнять реальное железо, раз в *-нацать быстрее
виртуальной машины на её языке, которая будет виртуально исполнять то, что должно
выполнять реальное железо, раз в *-нацать быстрее
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!
Портировать Java? Вы хоть представляете какой объем работы это занимает? Легче велосипед изобрести, чем портировать java.Artyom wrote:И надо снова изобретать велосипед. Существует JAVA (не JavaScript) со своим ByteCode, так и портируйте её, -
всем хороша, работает хоть в Windows, хоть Ёща.
Технологии меняют мир, а я - меняю технологии.
Who is online
Users browsing this forum: No registered users and 9 guests