Перейти к содержанию
    

Цифровая видеокамера

Если увижу смысл в выкладывании исходника "автокода" - выложу. Пока-что никакого смысла не вижу - открытые проекты вне mainstream - не развиваются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот что пришло в голову.

 

Длинное арифметическое выражение можно упростить до "ассемблерного" вида без использования низкоуровневых конструкций:

// a = b+c*d+e; 
int local; 
local = c*d; 
local += b; 
a = local + e;

 

Длинный if-else упростить без явного использования условных "goto" в общем случае нельзя. Для примера можно взять:

if( (a==1 && b==2 || c==3 && d == 4 ) && ( e == 5 || f == 6) ) { ... } else { ... }

 

Но если запретить в "урезанном ЯВУ" изменение приоритета "||" и "&&" скобками, то появляется возможность упрощения до "ассемблерного" вида без явного использования условных "goto":

// if( (a & b) == 1 &&  (c & d) == 2 || (e & f) == 3 ) { ... } else { ... } 
int local;
if(
  ( local = a & b, 
    local == 1 )
&&
  ( local = c & d, 
    local == 2 )
||
  ( local = e & f, 
    local == 3 )
){ 
  ... 
} else {
  ...
}

 

Т.о. появляется возможность делать основную компиляцию в рамках ЯВУ:

Си/Паскаль/... --> "ассемблерный" Си/Паскаль/... --> "автокод" (улучшение читабельности) --> машинные коды. Как насчет открытой разработки такой цепочки?

 

"Автокод" - синтаксис наподобие:

if
  local = a & b 
  local == 1
and
  local = c & d 
  local == 2
or
  local = e & f 
  local == 3
then
  ... 
else
  ...
end

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Си/Паскаль/... --> "ассемблерный" Си/Паскаль/... --> "автокод" (улучшение читабельности) --> машинные коды. Как насчет открытой разработки такой цепочки?

На себя могу взять аппаратную реализацию ява-ориентированного процессора.

С программированием - не очень.

Сейчас много читаю про ява процессоры и их архитектуру.

Пока не понятно, как в них можно встроить векторный сопроцессор.

И как писать для него программы (не в яве же)?

Хотя это не обязательно, и с одним ява процессором интересно.

 

Николай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне ява неинтересна, тк ява не только не решает проблему "твердого" софта, а - закрепляет ее. "Твердый" софт - когда проще адаптировать новое железо под старый софт, чем перекомпилировать старый софт(в исходниках) под новое железо. Имхо.

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно нескромный вопрос? А причем здесь вообще "камера" - в исходном pdf какой-то процессор нарисован.

Можно предполагаемую камеру сравнить с существующими?

В чем у нее преимущества?

Что она сможет такого, что не могут уже готовые?

Когда будет готов работающий прототип?

 

А что касается конкуренции - если идеи интересные и продукт стоящий - запросто можно конкурировать и с "монстрами". Даже в одиночку.

 

Андрей

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день, Андрей. Что-то вас давно на форуме не было видно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день, Андрей. Что-то вас давно на форуме не было видно.

 

Добрый день. Или ночь - у нас пол-двенадцатого

 

Наверное, всюду успеть трудно, я и сюда через Referrer Log нашего сайта зашел.

 

Андрей

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.о. появляется возможность делать основную компиляцию в рамках ЯВУ:

Си/Паскаль/... --> "ассемблерный" Си/Паскаль/... --> "автокод" (улучшение читабельности) --> машинные коды.

Все-таки есть польза от форума :) - обратил внимание, что текущий "автокод" очень похож на урезанный Си, в котором:

- отсутствуют типы, все переменные/массивы объявляются, как "static" (большой регистровый файл в памяти),

- только индексная адресация, массивы объявляются через "[ ]",

- упрощенная запись выражений - как в Паскале,

- нет структур, switch (взамен есть if-elsif-...-else).

Так что, пожалуй, выкину "автокод", а компиляцию сделаю с "ассемблерного" подмножества Си. Тогда будет цепочка: подмножество Си --> "ассемблерное" подмножество Си --> машинные коды.

 

Образец "ассемблерного" Си(кроме "printf") - на примере N-ферзей:

queens( static N ){
static
count,
arow[20], 
aleft[20], 
aright[20], 
aposs[20],
poss, 
place, 
val, 
pos, 
pos1, 
N1,
temp,	
temp1;	

count = 0;	
N1= N & 1;
temp = 1 << N;
val = temp - 1;
temp = N >> 1;
poss = val >> temp;
arow[1] = 0;
aleft[1] = 0;
aright[1] = 0;
aposs[1] = poss;
pos = 1; 
do{
	if( poss != 0 ){
		temp = -poss;
		place = poss & temp;
		temp = ~place;
		poss = poss & temp;
		if( pos == N1 && poss == 0 ){  
			count = count << 1;
		}	
		if( pos != N ){
			pos1 = pos + 1; 
			aposs[pos] = poss;	 
			temp = arow[pos];
			temp = temp | place;
			arow[pos1] = temp;
			temp = aleft[pos];
			temp = temp | place;
			temp = temp << 1;
			aleft[pos1] = temp;  
			temp = aright[pos];	
			temp = temp | place;	
			temp = temp >> 1;	
			aright[pos1] = temp;
			temp = arow[pos1];	
			temp1 = aleft[pos1];
			temp = temp | temp1;
			temp1 = aright[pos1];
			temp = temp | temp1;
			temp = ~temp;				
			temp = temp & val;
			poss = temp;
			pos = pos1;	 
		}else{
			count = count + 1;
		}	
	}else{ 
		pos = pos - 1; 
		poss = aposs[pos]; 
	}
}while( pos != 0 );	
if( N1 == 0 ){
	count = count << 1;
}
return count;
}

main(){
static N;
for(N = 1; N < 15; N = N + 1){
	printf("queens(%d)=%d \n", N, queens(N)); 
}
}

В "ассемблерном" подмножестве нет длинных выражений --> непосредственно транслируются в 3x-операндные машинные коды.

 

Предлагаю открытый проект софт-процессора с большим регистровым файлом в памяти(c Гарвардской архитектурой - Циклоны/Спартаны дадут ~100MIPS). Мне он не нужен(есть свой), но интересует развитие идеи компиляции в рамках ЯВУ(когда промежуточным языком является подмножество ЯВУ), и под этот проект готов взять на себя открытый компилятор с "ассемблерного" Си.

Изменено пользователем Omen_13
Оформление кода

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предлагаю открытый проект софт-процессора с большим регистровым файлом в памяти(c Гарвардской архитектурой - Циклоны/Спартаны дадут ~100MIPS). Мне он не нужен(есть свой), но интересует развитие идеи компиляции в рамках ЯВУ(когда промежуточным языком является подмножество ЯВУ), и под этот проект готов взять на себя открытый компилятор с "ассемблерного" Си.

Замечательно!

Какого объема нужен регистровый файл?

PS. Может перейти в тему "Свои процессоры".

 

Николай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пока не перешли в свои процессоры...

 

про язык LISA кто-нибудь знает?

http://en.wikipedia.org/wiki/Language_for_...et_Architecture

 

ну и тулзы, которые синтезят процессор и софт(компилер, либы) для него

http://www.synopsys.com/Tools/SLD/Processo...es/default.aspx

бывший coware (софт есть в известном месте)

я сам не сталкивался - может кто-то расскажет, что там

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какого объема нужен регистровый файл?

PS. Может перейти в тему "Свои процессоры".

При большом регистровом файле константы удобно брать из регистров, а не из команды. Массивы - в отдельной памяти. Поэтому желаемое число регистров = число статических переменных + число констант.

Для Фон-Неймановской архитектуры логично все локальные переменные нерекурсивных(нереентрабельных) функций делать статическими - код все-равно занимает в разы больше места. Чем больше окно регистрового файла, тем лучше. У меня 1К при 36-разрядном коде: 6 бит - код операции, 30 бит - 3 операнда. Неиспользуемые регистры м/б заняты командами/данными(массивами). Для Гарвардской архитектуры лишние регистры никак не используются, но все-равно лучше взять по-максимуму (урезать проще, чем нарастить).

 

Можно продолжить в "Свои процессоры".

 

У меня отлаженная Фон-Неймановская архитектура(2 такта на инструкцию при ~100МГц), и незаконченная переределка на Гарвардскую(1 такт на инструкцию, кроме переходов) - задача отошла на задний план. Активное участие обещаю только в разработке компилятора (устрою перерывчик себе в "синтезе программ", а то "тихо шифером шурша, ...").

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже прикинул архитектуру с большим регистровым файлом (2К).

Делаю краткое описание. В выходные выложу в другой теме.

Тогда можно будет говорить более предметно.

 

Николай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да и я когда-то MJPEG на асме написал - но кому это сейчас надо?

 

А что за проект, если не секрет ? Если Вам не надо, то можно взглянуть на реализацию ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что за проект, если не секрет ? Если Вам не надо, то можно взглянуть на реализацию ?

проект был давно и дальше макетной платы не пошел, для BF с использованием его архитектуры (то есть трудно перенести куда-то будет), ну и уверенности в том, что найду и сумею собрать у меня нету. вобщем так сразу не могу показать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...