Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс окт 22, 2017 6:44 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 61 сообщение ]  На страницу 1 2 3 4 5 След.
Автор Сообщение
 Заголовок сообщения: Высокоуровневый ассемблер
СообщениеДобавлено: Пн сен 21, 2015 1:35 am 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Пн сен 21, 2015 12:00 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1193
А какая конечная цель? Смесь java с ассемблером? Так там тоже есть байткод.


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Пн сен 21, 2015 12:12 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Pathoswithin писал(а):
А какая конечная цель? Смесь java с ассемблером? Так там тоже есть байткод.

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн сен 21, 2015 12:26 pm 
В сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1076
А не лучше написать набор макросов для fasm?

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Пн сен 21, 2015 12:34 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

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


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Пн сен 21, 2015 12:47 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Pathoswithin писал(а):
То-есть ты хочешь неслабо пожертвовать скоростью, чтобы уменьшить и без того маленький размер? Мне кажеться, размер то как раз уже всем пофиг, рядом с размерами видео...
Ты уверен, что у тебя хватит энтузиазма и времени сделать большую поддержку ф-ций?

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


Вернуться к началу
 Заголовок сообщения: Re:
СообщениеДобавлено: Пн сен 21, 2015 12:48 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
punk_joker писал(а):
А не лучше написать набор макросов для fasm?

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


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Пн сен 21, 2015 2:13 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1193
А, то-есть уже много наработок. Тогда главный вопрос — почему виртуальная машина, а не компилятор?


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Пн сен 21, 2015 2:57 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Pathoswithin писал(а):
А, то-есть уже много наработок. Тогда главный вопрос — почему виртуальная машина, а не компилятор?

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


Последний раз редактировалось pavelyakov Пн сен 21, 2015 3:10 pm, всего редактировалось 2 раза.

Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Пн сен 21, 2015 3:00 pm 
Не в сети
Аватара пользователя

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

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


Выведет
Код:
okey!!


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Пн сен 21, 2015 3:51 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Пример кода
Код:
mov %1,0
loop:
console 0,%1
sleep 50
add %1,1
cmp %1,10
je end
jmp loop
end:

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


Вложения:
7526142.png
7526142.png [ 6.77 КБ | 2025 просмотров ]


Последний раз редактировалось pavelyakov Вт сен 22, 2015 1:42 pm, всего редактировалось 1 раз.
Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Вт сен 22, 2015 12:30 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Добавлены константы
Теперь можно еще лучше упрощать код
Пример
Код:
#define print, 'console 0,'
#define getch, 'console 1'
print 'Test:'
getch
print 'Work!!!'


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

Код:
#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,.. и т.д.


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Вт сен 22, 2015 5:39 pm 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Вт сен 22, 2015 5:56 pm 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Заголовок сообщения: Re: Высокоуровневый ассемблер
СообщениеДобавлено: Вт сен 22, 2015 6:01 pm 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 61 сообщение ]  На страницу 1 2 3 4 5 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB