Skip to content

Instantly share code, notes, and snippets.

@WideWord
Created February 14, 2015 20:41
Show Gist options
  • Select an option

  • Save WideWord/2e0c7b53422c28df6998 to your computer and use it in GitHub Desktop.

Select an option

Save WideWord/2e0c7b53422c28df6998 to your computer and use it in GitHub Desktop.
Каждая команда занимает 1 байт
и имеет формат: (по битам)
1 операнд
CCCCCAAA
0 операндов
CCCCCCCC
где С - биты оператора, A - биты операнда
Список команд:
0000 0000 nop ничего не делать
0000 0010 push *(sp--) = $
0000 0011 pop $ = *(sp++)
0000 0100 call $()
0000 0101 ret return
0000 0110 load $ = *f
0000 0111 store *f = $
0000 10 СС out const вывод $ в порт const
0000 11 СС in const ввод $ в порт const
00010 AAA get op $ = op
00011 AAA set op op = $
00100 AAA add op $ += op
00101 AAA sub op $ -= op
00110 AAA or op $ |= op
00111 AAA and op $ &= op
1000 CCCC c1 const устанавливает 0-3 биты $
1001 CCCC c2 const устанавливает 4-7 биты $
1010 СССС c3 const устанавливает 8-11 биты $
1011 СССС с4 const устанавливает 12-15 биты $
1100 0000 je if ($) goto f
1100 0001 jne if (!$) goto f
1100 0010 jl if ($ < 0) goto f
1100 0011 jg if ($ > 0) goto f
1100 0100 jmp goto f
Регистры:
все регистры 16-битные
000 a регистры общего назначения:
001 b
010 c
011 d
100 e
101 f - регистр общего назначения, адрес для различных команд
110 sp указатель стека
111 pc программный счётчик
$ - аккумулятор
Виртуальные команды:
сс const последовательно устанавливает 16битное значение в $ посредством команд c1-c4; занимает 4 байта
как прогать на этих командах:
a = b get a; set b;
a = b + c get b; add c; set a;
a = b + c - d get b; add c; sub d; set a;
push a get a; push
jmp ptr cc ptr; jmp;
a = 5 cc 5; set a;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment