Re[2]: Свой процессор на ПЛИС
От: 0x7be СССР  
Дата: 10.02.16 07:48
Оценка:
Здравствуйте, qwertyuiop, Вы писали:


Q>А какая в нем система команд?

RISC-подобная система команд, в общей сложности 60 команд.

Юзеру доступно восемь регистров общего назначения (R0-R7), плюс несколько специальных: SP (stack pointer), OP (object pointer), BP (base pointer).
Вся арифметика/логика только над регистрами. Загрузка/выгрузка регистров осуществляется в следующих режимах:
UPDATE: Арифметика/логика так же есть в режме "регистр и константа".

0. Инициализация регистра константой.
1. По константному адресу.
2. Косвенная адресация через регистр (любой из доступных).
4. Косвенная адресация со смещением от указателя OP или BP (смещение — либо константа, либо из регистра).

(Без)условные переходы либо константному адресу, либо через регистр.

Поддерживается работа со стеком: CALL/RET, PUSH/POP. В стек кладётся не только адрес возврата, но и адрес указателя на начало стекового фрейма. Благодаря этому можно не заботиться о выталкивании из стека лишнего при вызове RET — стек автоматически восстановится в нужное состояние.
Прерывания, обработка ошибок и т.п. пока не реализованы, работа на будущее.
Как-то так, вроде основные моменты осветил.

UPDATE: Код "Hello world":
Label    Command    Arg1    Arg2    
TTY      const      0FC00h
         nop            
         init       R0      msg    
loop     ldi        R1      R0    
         cmpc       R1      0    
         je         exit        
                
         str        R1      TTY    
         inc        R0        
         jmp        loop        
                
exit     jmp        exit   
                
msg      string     Hello, World!        
         dw         10        
         stringz    Have a nice day.        
         END PROGRAM






Q>Команды и данные в одной памяти или в разных?

В одной.

0>>
  • Ширина адреса: 16 бит, максимально адресуемая память — 128К (65536 двухбайтовых слов). Отдельные байты не адресуются.
    Q>Смелое решение. Я тоже как-то думал, что сейчас байты не нужны, в USB используется UTF-16 поэтому работать нужно в ней. А во многих сигнальных процессорах байтов нет уже давно.
    Это решение исключительно для упрощения схемы процессора. Поскольку я ориентируюсь на систему уровня Intel 80080/Zilog Z80, в ней байтовая адресация всё ещё актуальна.
    У меня в планах стоит разработать третью версию процессора, в которой я реализую ещё ряд фич, в т.ч. и байтовую адресацию.
  • Отредактировано 10.02.2016 8:03 0x7be . Предыдущая версия .
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.