![Цитата](images/styles/asdialup/misc/quote_icon.png)
Сообщение от
NovaStorm
Ну если про самомодификацию мы забыли, то неужели каждый раз считать адреса?
С IX/IY вполне хорошая скорость при минимуме объёма достигается. Или я ещё способы упускаю?
Самомодификацию байткода, я правильно понял?
![Цитата](images/styles/asdialup/misc/quote_icon.png)
Сообщение от
NovaStorm
Пример с printf, по-моему, самый неудачный, наверное, из всей стандартной библиотеки =)
Хорошо, пусть будет uint32_t mul(uint16_t op1, uint16_t op2), или код x=mul(12345, x)
, которое к примеру байткодом можно выразить так:
Код:
0x22, 0x35 /*copy var #35 and push result to stack */
0x25, 0x39, 0x30 /* push 12345 to stack */
0x49 /* mul stack */
0x32, 0x35 /*copy result from stack to var #35 */
![Цитата](images/styles/asdialup/misc/quote_icon.png)
Сообщение от
NovaStorm
Ну АлКо хочет, как я понимаю, ВМ и язык под неё общего назначения, и скорость тут будет играть весьма значительную роль.
Вот я и пытаюсь понять, чего точно хочет AlCo.
![Цитата](images/styles/asdialup/misc/quote_icon.png)
Сообщение от
GriV
0 - печать следующей за ним аскии-Z строки в активное окно
1 - создание окна, указываются начало X,Y, длина ширина
2 - выбор активного окна, следующий байт - номер окна
3 - очистка окна
4 - ассемблерная вставка
5 - операция работы с переменными, тут непонятно как что. Предлагайте варианты.
Имхо, слишком высокоуровнево пошел. Для начала простые операции с целочисленными переменными, потом работа с памятью и портами I/O, и уж потом всякие текстовые штучки.
![Цитата](images/styles/asdialup/misc/quote_icon.png)
Сообщение от
mastermind
Ну так система команд делалась под довольно ограниченное ALU
Точнее сказать 4битное АЛУ.