Created
February 14, 2015 20:41
-
-
Save WideWord/2e0c7b53422c28df6998 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Каждая команда занимает 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