реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Цифровая видеокамера
Leka
сообщение May 14 2010, 06:33
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Если увижу смысл в выкладывании исходника "автокода" - выложу. Пока-что никакого смысла не вижу - открытые проекты вне mainstream - не развиваются.
Go to the top of the page
 
+Quote Post
Leka
сообщение May 17 2010, 17:58
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



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

Длинное арифметическое выражение можно упростить до "ассемблерного" вида без использования низкоуровневых конструкций:
Код
// 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 - May 17 2010, 17:52
Go to the top of the page
 
+Quote Post
Ynicky
сообщение May 18 2010, 15:17
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



Цитата(Leka @ May 17 2010, 21:58) *
Си/Паскаль/... --> "ассемблерный" Си/Паскаль/... --> "автокод" (улучшение читабельности) --> машинные коды. Как насчет открытой разработки такой цепочки?

На себя могу взять аппаратную реализацию ява-ориентированного процессора.
С программированием - не очень.
Сейчас много читаю про ява процессоры и их архитектуру.
Пока не понятно, как в них можно встроить векторный сопроцессор.
И как писать для него программы (не в яве же)?
Хотя это не обязательно, и с одним ява процессором интересно.

Николай.
Go to the top of the page
 
+Quote Post
Leka
сообщение May 18 2010, 21:03
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



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

Сообщение отредактировал Leka - May 18 2010, 21:04
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение May 19 2010, 03:30
Сообщение #20


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220



Можно нескромный вопрос? А причем здесь вообще "камера" - в исходном pdf какой-то процессор нарисован.
Можно предполагаемую камеру сравнить с существующими?
В чем у нее преимущества?
Что она сможет такого, что не могут уже готовые?
Когда будет готов работающий прототип?

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

Андрей
Go to the top of the page
 
+Quote Post
dinam
сообщение May 19 2010, 04:06
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Добрый день, Андрей. Что-то вас давно на форуме не было видно.
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение May 19 2010, 05:26
Сообщение #22


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220



Цитата(dinam @ May 18 2010, 22:06) *
Добрый день, Андрей. Что-то вас давно на форуме не было видно.


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

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

Андрей
Go to the top of the page
 
+Quote Post
Leka
сообщение May 19 2010, 21:33
Сообщение #23


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Leka @ May 17 2010, 21:58) *
Т.о. появляется возможность делать основную компиляцию в рамках ЯВУ:
Си/Паскаль/... --> "ассемблерный" Си/Паскаль/... --> "автокод" (улучшение читабельности) --> машинные коды.

Все-таки есть польза от форума smile.gif - обратил внимание, что текущий "автокод" очень похож на урезанный Си, в котором:
- отсутствуют типы, все переменные/массивы объявляются, как "static" (большой регистровый файл в памяти),
- только индексная адресация, массивы объявляются через "[ ]",
- упрощенная запись выражений - как в Паскале,
- нет структур, switch (взамен есть if-elsif-...-else).
Так что, пожалуй, выкину "автокод", а компиляцию сделаю с "ассемблерного" подмножества Си. Тогда будет цепочка: подмножество Си --> "ассемблерное" подмножество Си --> машинные коды.

Образец "ассемблерного" Си(кроме "printf") - на примере N-ферзей:
CODE
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 - Jun 1 2010, 19:26
Причина редактирования: Оформление кода
Go to the top of the page
 
+Quote Post
Ynicky
сообщение May 20 2010, 09:25
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



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

Замечательно!
Какого объема нужен регистровый файл?
PS. Может перейти в тему "Свои процессоры".

Николай.
Go to the top of the page
 
+Quote Post
yes
сообщение May 20 2010, 11:10
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



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

про язык LISA кто-нибудь знает?
http://en.wikipedia.org/wiki/Language_for_...et_Architecture

ну и тулзы, которые синтезят процессор и софт(компилер, либы) для него
http://www.synopsys.com/Tools/SLD/Processo...es/default.aspx
бывший coware (софт есть в известном месте)
я сам не сталкивался - может кто-то расскажет, что там
Go to the top of the page
 
+Quote Post
Leka
сообщение May 20 2010, 15:21
Сообщение #26


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Ynicky @ May 20 2010, 13:25) *
Какого объема нужен регистровый файл?
PS. Может перейти в тему "Свои процессоры".

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

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

У меня отлаженная Фон-Неймановская архитектура(2 такта на инструкцию при ~100МГц), и незаконченная переределка на Гарвардскую(1 такт на инструкцию, кроме переходов) - задача отошла на задний план. Активное участие обещаю только в разработке компилятора (устрою перерывчик себе в "синтезе программ", а то "тихо шифером шурша, ...").
Go to the top of the page
 
+Quote Post
Ynicky
сообщение May 20 2010, 16:36
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



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

Николай.
Go to the top of the page
 
+Quote Post
Leka
сообщение May 20 2010, 18:34
Сообщение #28


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



В понедельник посмотрю.
Go to the top of the page
 
+Quote Post
ArtemDement
сообщение Apr 7 2012, 16:23
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 446
Регистрация: 19-09-09
Из: Санкт-Петербург
Пользователь №: 52 460



Цитата(yes @ May 11 2010, 14:49) *
да и я когда-то MJPEG на асме написал - но кому это сейчас надо?


А что за проект, если не секрет ? Если Вам не надо, то можно взглянуть на реализацию ?
Go to the top of the page
 
+Quote Post
yes
сообщение Apr 12 2012, 15:40
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(ArtemDement @ Apr 7 2012, 20:23) *
А что за проект, если не секрет ? Если Вам не надо, то можно взглянуть на реализацию ?

проект был давно и дальше макетной платы не пошел, для BF с использованием его архитектуры (то есть трудно перенести куда-то будет), ну и уверенности в том, что найду и сумею собрать у меня нету. вобщем так сразу не могу показать
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016