Leka 0 8 октября, 2008 Опубликовано 8 октября, 2008 · Жалоба Все примерно так и делают :) Большинство софт ядер явно или косвенно соответствуют языку C. Можно пример _простой_ виртуальной машины Си с открытыми исходниками? Ява отпадает в силу громоздкости полной системы(по сравнению с Pascal-S). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 8 октября, 2008 Опубликовано 8 октября, 2008 · Жалоба Можно пример _простой_ виртуальной машины Си с открытыми исходниками? Ява отпадает в силу громоздкости полной системы(по сравнению с Pascal-S). Nios, niosii, microblase, xr16 и много других - у всех в основе лежат базовые операции регистровых машин(с можно по большому счету отнести к регистровым языкам). Сделать неоптимизирующий компилятор С на базе lcc не составляет проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 8 октября, 2008 Опубликовано 8 октября, 2008 · Жалоба http://www.246.dk/pascals3.html Менее 1000 строк кода для компилятора с интерпретатором - аналогичное для Си - ???. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 9 октября, 2008 Опубликовано 9 октября, 2008 · Жалоба а зачем изобретать велосипед? смысл совместной заточки компилятора под ядро и ядра под компилятор? все равно - трудозатрат больше, а эффективности меньше. с момента рождения i4004 прошло 37 лет. за это время родились сотни архитектур, большая часть которых банально вымерла. но посмотрите какой список поддерживается GCC? может, проще всего выбрать наиболее простое и мелкое ядро поддерживаемое GCC и реализовать его? как мне кажется - одно из наиболее оптимальных - PDP-11. но вот незадача - неудобно отладку вести. вот с такими вот соображениями я и выбрал MSP430 для реализации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 9 октября, 2008 Опубликовано 9 октября, 2008 (изменено) · Жалоба а зачем изобретать велосипед?Это где их раздают? Вот slog больше месяца назад попросил велосипед, не требующий доработки напильником - чтобы в булочную за углом мотаться - ничего лучше карьерного самосвала ему так и не предложили. смысл совместной заточки компилятора под ядро и ядра под компилятор?Не совсем так, подбирается псевдокод, под который легко заточить и компилятор, и ядро - чтобы можно было независимо менять/оптимизировать и софт, и железо. Что касается заточки компиляторов, вместо цепочки: код на ЯВУ --> оптимизирующий компилятор --> код на ассемблере --> компилятор --> машинные коды, предпочел бы видеть: код на ЯВУ --> оптимизирующий препроцессор --> код на ЯВУ --> компилятор --> псевдокодкод --> оптимизирующий ассемблер --> машинные коды. Изменено 9 октября, 2008 пользователем Leka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 9 октября, 2008 Опубликовано 9 октября, 2008 · Жалоба Это где их раздают? Вот slog больше месяца назад попросил велосипед, не требующий доработки напильником - чтобы в булочную за углом мотаться - ничего лучше карьерного самосвала ему так и не предложили. да бог ты мой, если действительно захотеть что-то прикрутить - то на выбор есть пикоблейз, микроблейз в порезанной версии, ниос-2 в порезанной версии. зулин-цпу есть с GCC. это всё готовое со всеми сервисами и удобствами. но в любом случае - хоть какой-то манульчик читать придётся. Не совсем так, подбирается псевдокод, под который легко заточить и компилятор, и ядро - чтобы можно было независимо менять/оптимизировать и софт, и железо. Что касается заточки компиляторов, вместо цепочки: код на ЯВУ --> оптимизирующий компилятор --> код на ассемблере --> компилятор --> машинные коды, предпочел бы видеть: код на ЯВУ --> оптимизирующий препроцессор --> код на ЯВУ --> компилятор --> псевдокодкод --> оптимизирующий ассемблер --> машинные коды. над первой цепочкой трудится куча программеров уже. и вчера. над вашей - трудится только вам и прочим фанатам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 10 октября, 2008 Опубликовано 10 октября, 2008 · Жалоба над первой цепочкой трудится куча программеров уже. и вчера. Понятно, что лучше продать 100 неуниверсальных оптимизирующих компиляторов Си-->асм под 100 конкретных архитектур, чем 10 универсальных Си-->Си. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба Понятно, что лучше продать 100 неуниверсальных оптимизирующих компиляторов Си-->асм под 100 конкретных архитектур, чем 10 универсальных Си-->Си. вот только эти неуниверсальные будут однозначно шустрее чем универсальные. да и потом - так или иначе переводить си->асм придётся. и наибольшая степень оптимизации доступна именно в этом переходе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба Уже начал делать ядро под Паскаль - интересные идеи пришли по безрегистровой архитектуре :) (сначала опробую со своим ассемблером - легко настраивается на любую систему команд). Основной упор - на аппаратную поддержку локальных/нелокальных переменных и вызовов подпрограмм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба интересные идеи пришли по безрегистровой архитектуре :) эээ. ооо. то есть переменные цикла - в раме? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба эээ. ооо. то есть переменные цикла - в раме? Да. Два 10нсек такта на a+=b в раме - не устроит, что-ли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба Уже начал делать ядро под Паскаль - интересные идеи пришли по безрегистровой архитектуре :) (сначала опробую со своим ассемблером - легко настраивается на любую систему команд). Основной упор - на аппаратную поддержку локальных/нелокальных переменных и вызовов подпрограмм. %)) у дураков мысли сходятся :beer: есть проект, в который просто идеально встает свое небольшое ядрышко с CISC командами и двумя Wishbone интерфейсами, комманд на 100. Начал делать наброски. В этот раз буду делать кодогенератор на питоне, благо опыт и наработки имеются %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба Да. Два 10нсек такта на a+=b в раме - не устроит, что-ли? хм. прочитать а, прочитать б, записать результат в а - вроде три такта? али я что-то непонимаю? а адрес этих а и бэ где берётся? как их отличить от цэ и дэ ? а как адресовать много памяти? что-то я идеи не понимаю... :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба хм. прочитать а, прочитать б, записать результат в а - вроде три такта? али я что-то непонимаю? а адрес этих а и бэ где берётся? как их отличить от цэ и дэ ? а как адресовать много памяти? что-то я идеи не понимаю... :( ну вообще это можно и за 1 такт сделать %) прочитать a и b, сложить и записать в память. Но для этого нужна асинхронная/квази асинхронная память, а за 2 такта так на обычной делается. a,b прочитать и результат записать. думаю что уважаемый Leka во фразе Уже начал делать ядро под Паскаль - интересные идеи пришли по безрегистровой архитектуре smile.gif (сначала опробую со своим ассемблером - легко настраивается на любую систему команд). имел в виду не полное отсутствие регистров (ну как минимум указатель на инструкцию то должен быть %)) , а то что использует он "регистровый файл на памяти". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 13 октября, 2008 Опубликовано 13 октября, 2008 (изменено) · Жалоба хм. прочитать а, прочитать б, записать результат в а - вроде три такта? али я что-то непонимаю?Память внутренняя, двухпортовая, поэтому прочитать "а" и "б" - один такт. а адрес этих а и бэ где берётся? как их отличить от цэ и дэ ?Из 32(36)-разрядной инструкции. а как адресовать много памяти? что-то я идеи не понимаю... :(Все массивы, структуры и тп доступны только по ссылке через переменные индексов/полей и базовые регистры(скрытые) --> непосредственно адресуемый объем памяти не превышает максимально допустимого числа переменных в одной любой подпрограмме(независимо от вложенности и тп). Устанавливаем, например, максимальное число переменных в подпрограмме(или глобальных в программе) = 127 --> 7-ю разрядами (+ дополнительными служебными) адресуем хоть 4Гб "регистровый файл на памяти" (для 32х-разрядного ядра). Изменено 13 октября, 2008 пользователем Leka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться