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

Порекомендуйте какое-нибудь softcore

Все примерно так и делают :) Большинство софт ядер явно или косвенно соответствуют языку C.

Можно пример _простой_ виртуальной машины Си с открытыми исходниками? Ява отпадает в силу громоздкости полной системы(по сравнению с Pascal-S).

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


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

Можно пример _простой_ виртуальной машины Си с открытыми исходниками? Ява отпадает в силу громоздкости полной системы(по сравнению с Pascal-S).

Nios, niosii, microblase, xr16 и много других - у всех в основе лежат базовые операции регистровых машин(с можно по большому счету отнести к регистровым языкам). Сделать неоптимизирующий компилятор С на базе lcc не составляет проблем.

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


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

http://www.246.dk/pascals3.html

Менее 1000 строк кода для компилятора с интерпретатором - аналогичное для Си - ???.

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


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

а зачем изобретать велосипед? смысл совместной заточки компилятора под ядро и ядра под компилятор? все равно - трудозатрат больше, а эффективности меньше.

 

с момента рождения i4004 прошло 37 лет. за это время родились сотни архитектур, большая часть которых банально вымерла. но посмотрите какой список поддерживается GCC? может, проще всего выбрать наиболее простое и мелкое ядро поддерживаемое GCC и реализовать его? как мне кажется - одно из наиболее оптимальных - PDP-11. но вот незадача - неудобно отладку вести. вот с такими вот соображениями я и выбрал MSP430 для реализации.

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


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

а зачем изобретать велосипед?
Это где их раздают? Вот slog больше месяца назад попросил велосипед, не требующий доработки напильником - чтобы в булочную за углом мотаться - ничего лучше карьерного самосвала ему так и не предложили.

 

смысл совместной заточки компилятора под ядро и ядра под компилятор?
Не совсем так, подбирается псевдокод, под который легко заточить и компилятор, и ядро - чтобы можно было независимо менять/оптимизировать и софт, и железо. Что касается заточки компиляторов, вместо цепочки: код на ЯВУ --> оптимизирующий компилятор --> код на ассемблере --> компилятор --> машинные коды, предпочел бы видеть: код на ЯВУ --> оптимизирующий препроцессор --> код на ЯВУ --> компилятор --> псевдокодкод --> оптимизирующий ассемблер --> машинные коды.
Изменено пользователем Leka

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


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

Это где их раздают? Вот slog больше месяца назад попросил велосипед, не требующий доработки напильником - чтобы в булочную за углом мотаться - ничего лучше карьерного самосвала ему так и не предложили.

да бог ты мой, если действительно захотеть что-то прикрутить - то на выбор есть пикоблейз, микроблейз в порезанной версии, ниос-2 в порезанной версии. зулин-цпу есть с GCC. это всё готовое со всеми сервисами и удобствами. но в любом случае - хоть какой-то манульчик читать придётся.

 

Не совсем так, подбирается псевдокод, под который легко заточить и компилятор, и ядро - чтобы можно было независимо менять/оптимизировать и софт, и железо. Что касается заточки компиляторов, вместо цепочки: код на ЯВУ --> оптимизирующий компилятор --> код на ассемблере --> компилятор --> машинные коды, предпочел бы видеть: код на ЯВУ --> оптимизирующий препроцессор --> код на ЯВУ --> компилятор --> псевдокодкод --> оптимизирующий ассемблер --> машинные коды.

над первой цепочкой трудится куча программеров уже. и вчера. над вашей - трудится только вам и прочим фанатам.

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


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

над первой цепочкой трудится куча программеров уже. и вчера.

Понятно, что лучше продать 100 неуниверсальных оптимизирующих компиляторов Си-->асм под 100 конкретных архитектур, чем 10 универсальных Си-->Си.

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


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

Понятно, что лучше продать 100 неуниверсальных оптимизирующих компиляторов Си-->асм под 100 конкретных архитектур, чем 10 универсальных Си-->Си.

вот только эти неуниверсальные будут однозначно шустрее чем универсальные. да и потом - так или иначе переводить си->асм придётся. и наибольшая степень оптимизации доступна именно в этом переходе.

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


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

Уже начал делать ядро под Паскаль - интересные идеи пришли по безрегистровой архитектуре :) (сначала опробую со своим ассемблером - легко настраивается на любую систему команд). Основной упор - на аппаратную поддержку локальных/нелокальных переменных и вызовов подпрограмм.

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


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

интересные идеи пришли по безрегистровой архитектуре :)

эээ. ооо. то есть переменные цикла - в раме?

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


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

эээ. ооо. то есть переменные цикла - в раме?

Да. Два 10нсек такта на a+=b в раме - не устроит, что-ли?

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


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

Уже начал делать ядро под Паскаль - интересные идеи пришли по безрегистровой архитектуре :) (сначала опробую со своим ассемблером - легко настраивается на любую систему команд). Основной упор - на аппаратную поддержку локальных/нелокальных переменных и вызовов подпрограмм.

 

%)) у дураков мысли сходятся :beer:

 

есть проект, в который просто идеально встает свое небольшое ядрышко с CISC командами и двумя Wishbone интерфейсами, комманд на 100.

 

Начал делать наброски. В этот раз буду делать кодогенератор на питоне, благо опыт и наработки имеются %)

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


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

Да. Два 10нсек такта на a+=b в раме - не устроит, что-ли?

хм. прочитать а, прочитать б, записать результат в а - вроде три такта? али я что-то непонимаю?

 

а адрес этих а и бэ где берётся? как их отличить от цэ и дэ ?

 

а как адресовать много памяти? что-то я идеи не понимаю... :(

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


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

хм. прочитать а, прочитать б, записать результат в а - вроде три такта? али я что-то непонимаю?

 

а адрес этих а и бэ где берётся? как их отличить от цэ и дэ ?

 

а как адресовать много памяти? что-то я идеи не понимаю... :(

 

ну вообще это можно и за 1 такт сделать %) прочитать a и b, сложить и записать в память. Но для этого нужна асинхронная/квази асинхронная память, а за 2 такта так на обычной делается. a,b прочитать и результат записать.

 

думаю что уважаемый Leka во фразе

Уже начал делать ядро под Паскаль - интересные идеи пришли по безрегистровой архитектуре smile.gif (сначала опробую со своим ассемблером - легко настраивается на любую систему команд).

 

имел в виду не полное отсутствие регистров (ну как минимум указатель на инструкцию то должен быть %)) , а то что использует он "регистровый файл на памяти".

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


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

хм. прочитать а, прочитать б, записать результат в а - вроде три такта? али я что-то непонимаю?
Память внутренняя, двухпортовая, поэтому прочитать "а" и "б" - один такт.

 

а адрес этих а и бэ где берётся? как их отличить от цэ и дэ ?
Из 32(36)-разрядной инструкции.

 

а как адресовать много памяти? что-то я идеи не понимаю... :(
Все массивы, структуры и тп доступны только по ссылке через переменные индексов/полей и базовые регистры(скрытые) --> непосредственно адресуемый объем памяти не превышает максимально допустимого числа переменных в одной любой подпрограмме(независимо от вложенности и тп). Устанавливаем, например, максимальное число переменных в подпрограмме(или глобальных в программе) = 127 --> 7-ю разрядами (+ дополнительными служебными) адресуем хоть 4Гб "регистровый файл на памяти" (для 32х-разрядного ядра).
Изменено пользователем Leka

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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