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'; Выведет Code: okey!! |
Author: | paulcodeman [ Mon Sep 21, 2015 3:51 pm ] | ||
Post subject: | Re: Высокоуровневый ассемблер | ||
Пример кода Code: mov %1,0 Вывод чисел от 0 до 9 с задержкой 50 сотых секунд.
|
Author: | paulcodeman [ Tue Sep 22, 2015 12:30 pm ] |
Post subject: | Re: Высокоуровневый ассемблер |
Добавлены константы Теперь можно еще лучше упрощать код Пример Code: #define print, 'console 0,' или пример приведенный выше Code: #define var1,'%1' По умолчанию уже за ранее определены названия: 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 клавиатуры написанный под абстрактный язык программирования для виртуальной машины на её языке, которая будет виртуально исполнять то, что должно выполнять реальное железо, раз в *-нацать быстрее ![]() |
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/ |