-
Ynicky
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 209
-
Спасибо получено: 39
-
-
-
-
|
А есть пример известного процессора с аккумуляторной архитектурой?
У меня в LCC есть .md файлы на alpha, mips, pdp11, sparc, x86. Не говоря уже про свои.
Николай.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Ynicky
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 209
-
Спасибо получено: 39
-
-
-
-
|
Проект будет открытым, если будет возможность сделать Си-компилятор.
А нужен ли к такому простому процессору компилятор?
Николай.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
А есть пример известного процессора с аккумуляторной архитектурой?
В чистом виде только в теории, наверно. А в PIC/51, например, результат м/б записан как в аккумулятор, так и в регистр/память. Я бы считал такую архитектуру промежуточной между аккумуляторной, и регистровой.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Leka.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
А нужен ли к такому простому процессору компилятор?
Конечно, без какого-либо компилятора Си никто не будет использовать его. Я точно не буду.
Набор команд достаточно полный, с 2-мя типами адресации источника - регистровой, и индексной, например:
ADD Rn --> A += Rn
ADD imm8(Rn) --> A += imm8(Rn)
ST Rn --> Rn = A
ST imm8(Rn) --> imm8(Rn) = A
BGE Rn, imm8 --> if(A >= Rn) goto BAZE+imm8
BGE imm8(Rn), imm8' --> if(A >= imm8(Rn)) goto BAZE+imm8'
и тд.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Ynicky
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 209
-
Спасибо получено: 39
-
-
-
-
|
Сколько будет регистров в регистровом файле?
Если больше 32, то однозначно LCC не подойдет.
В остальном я пока не вижу ограничений.
Николай.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
Для 8-разрядной команды - 8, для 9-разрядной команды (при использовании M9K в режиме 1К*9бит) - 16.
Код операции - 4 разряда, тип адресации - 1 разряд, остальное - номер регистра.
Будем пробовать?
Если да, то на неделе открою новую тему, и выложу для начала описание команд, и блок-схему, по которой можно будет оценить число ЛЕ и число уровней логики.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Ynicky
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 209
-
Спасибо получено: 39
-
-
-
-
|
Последний раз LCC собирал под WIN7/32. NMAKE использовал от Visual Studio 6.
Сейчас стоит WIN10/64. Если получится собрать на нем, то пробуем.
Николай.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
alman
-
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 263
-
Спасибо получено: 41
-
-
-
-
-
|
Я бы тоже в очередь стал. :)
В смысле - попросил бы помощь в портировании LCC под свою систему команд - нет ни сил, ни времени реализовать генератор кода.
Нельзя ли как-нибудь скооперироваться? Правда скажу честно - не знаю чем я бы мог полезен для Вашей SoC и для софт-процессора от Leka.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от alman.
|
-
Ynicky
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 209
-
Спасибо получено: 39
-
-
-
-
|
Собрал LCC под WIN10/64 с помощью старой Visual Studio 6. Пришлось вспоминать какие переменные среды указывать.
Когда-то тупо скопировал директорию VC98 от Visual Studio 6, где есть файл nmake.exe. Им и пользуюсь.
Если собирать под Linux, то я не знаю как. попросил бы помощь в портировании LCC под свою систему команд
Буду делать .md файл и выкладывать в теме:
Минималистичное софт-ядро для Марсохода
На этом примере можете учиться.
Николай.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
alman
-
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 263
-
Спасибо получено: 41
-
-
-
-
-
|
static int hello(int c, char * a)
{
int j = 0x22;
int k = 0x7;
return ~ ((((int)a) + j) ) - c;
}
int main(int argc)
{
return hello(argc, "Luck");
}
lcc -S -Wf-target=m16 test.c
; generated by lcc-m16 rev.1.0 on Mon Nov 30 23:27:42 2015
align 2
_hello:
subi sp,sp,4
lea r15,34
sw r15,-2+4(sp)
lea r15,7
sw r15,-4+4(sp)
mov r15,r5
lw r14,-2+4(sp)
add r15,r14
not r15
mov r2,r15
sub r2,r4
_test_c_1:
addi sp,sp,4
ret
nop
global _main
align 2
_main:
subi sp,sp,8
sw r4,8(sp)
lw r4,0+8(sp)
lea r5,_test_c_3
call _hello
nop
mov r15,r2
_test_c_2:
addi sp,sp,8
ret
nop
_test_c_3:
byte 76
byte 117
byte 99
byte 107
byte 0
Весьма красивый код получился у m16
А можно ли взглянуть на шестнадцатеричный дамп этого кода?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от alman. Причина: int k = 0x7;
|
Время создания страницы: 0.160 секунд