Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт апр 18, 2024 20:55

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 269 ]  На страницу Пред.  1 ... 14, 15, 16, 17, 18
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 12:59 
Не в сети

Зарегистрирован: Сб янв 24, 2009 10:06
Сообщения: 96
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Alexander писал(а):
я таки и непонял каким образом должно здесь реализовыватьс без тщательного анализа тесктов программ и построения гистограмм на предмет употребления тех или иных программных конструкций, и возможного их эквивалента в машинных кодах или мнемониках ассемблера.

Такой анализ провел Д.Патерссон. Я воспользовался его результатами.

"TI уже который раз подряд что-то сделал на основе практических исследований: http://focus.ti.com/lit/an/slaa205c/slaa205c.pdf
конечно, тут немного притянуто за уши. но в целом картина более-менее правдивая. в отличие от.....
Ссылку любезно предоставил Mahagan".
Получил огромное удовольствие от чтения и полученных там оценок.
За неимением транслятора ниже приведенный бенч откомпилировал вручную.
* Name : 8-bit Switch Case
* Purpose : Benchmark accessing switch statement using 8-bit value.
typedef unsigned char UInt8;
UInt8 switch_case(UInt8 a)
UInt8 output;
switch (a)
case 0x01:
output = 0x01;
break;
….
case 0x10:
output = 0x10;
break;
} /* end switch*/
return (output);

void main(void)
volatile UInt8 result;
result = switch_case(0x10);
return;
***************************
mainМ8: ldl 10h \ call switsh \ st result \ ret…7 байт
switch:
dup \ bnel 01h m2 \ drop \ ldl 01h \ ret …. 8*16=128 байт
….
M16: … \ drop \ ldl 10h \ ret
***************************
Результаты TI (байт с оптимизацией кода)
MSP430 – 198 (1.0)
ARM thumb – 338 (1.7)
8051 – 305 (1.5)
PIC18 – 208 (1.1)
Atmega8 - 350 - 1.8
M8 без оптимизации 135 байт (0.7) – в 2.6 раза лучше, чем у АВР.
Особенно меня восхитило одно из примечаний к PICу «did not support the memory model required for Whetstone analysis».
Значит что-то с концепциями у м.чипа плохо Или торопились быстрее выдать продукт на рынок?


Последний раз редактировалось architector Сб фев 07, 2009 19:22, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 15:15 
Не в сети
Аватара пользователя

Зарегистрирован: Вт ноя 06, 2007 21:23
Сообщения: 227
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
;) можно я похихикаю тихонько, нечего так делать - возращаемые значения свитч надо менять на вызов функций из соответсвующего массива. По сравнеию с другими ЯП ФОРТ в этом никаких накладок не дает.
Прежде чем програмировать алгоритм надо бы его упрощаь , тогда будет эффективность.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 15:40 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
architector писал(а):
Вы здесь показали свою схемотехническую сущность.
Продемонстрировали принципиальную разницу
1 - между префиксом и командой.
2 – между программистом и схемотехником.

Рекомендую слегка поинтересоваться моими разработками. Из которых будет заметно, что принципиальной разницы между программированием и схемотехникой у меня не наблюдается :)
architector писал(а):
А для меня – это еще какой то регистр, который надо специально настраивать, сохранять и восстанавливать, а указанном примере писать целую цепочку переходов (писать программу)....

Не вижу связи между этими утверждениями. Схемотехническая реализация длинного перехода с помощью вспомогательного регистра для программиста неотличима от префикса. Только команда загрузки в такой вспомогательный регистр может отстоять сколько угодно далеко от собственно команды "переход по адресу, с учетом содержимого вспомогательного регистра".
architector писал(а):
Основных префиксов два – префикс константы и операнда. Их назначение приведено в описании и упоминалось здесь. Есть еще префиксы пост и пре модификации индексных регистров. Но о них позже речь пойдет.

Сначала неплохо было бы показать, что данные действия реализуются именно префиксами. Потому что ничего префиксного я пока не увидел, есть обычные команды с различными размерами immediate данных, и команды, модифицирующие регистры процессора.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 19:26 
Не в сети

Зарегистрирован: Сб янв 24, 2009 10:06
Сообщения: 96
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Alexander писал(а):
;) можно я похихикаю тихонько....
Прежде чем програмировать алгоритм надо бы его упрощаь , тогда будет эффективность.

Смайлики не употребляю - были скобки, как везде выше - теперь поставил тире - получилось 1.8 и никаких хихиканий.
Ваш совет переадресую фирме TI, это они такой алгоритм бенча придумали, что бы показать преимущество MSP430.
Это их очередной бенч.
* Name : 8-bit 2-dim Matrix
* Purpose : Benchmark copying 8-bit values.
typedef unsigned char UInt8;
const UInt8 m1[16][4] = {
{0x12, 0x56, 0x90, 0x34}

{0x90, 0x34, 0x78, 0x12}
};
void main (void)
int i, j;
volatile UInt8 m2[16][4], m3[16][4];
for(i = 0; i < 16; i++)
for(j=0; j < 4; j++)
m2[i][j] = m1[i][j];
m3[i][j] = m2[i][j];
return;

*************коды М8
call uint8
byte {0x12, 0x56, 0x90, 0x34}

byte {0x90, 0x34, 0x78, 0x12};64
Ret

uint8: ldlA m2 \ ldlB m3
ldl 16 st int ;9
do: R+ ldd std(IA)
@+ ldd(IA) @+ std(IB) ;6
Int dec
Int bne do
Ret ;6

Итого 21 байт (очко).
Результаты TI (байт с оптимизацией кода)
MSP430 – 86 (1.0)
ARM thumb – 392 (4.6)
8051 – 398 (4.6)
PIC18 – 324 (3.8)
Atmega8 - 354 - 4.1
M8 без оптимизации 21 байт (0.2) – в 17 раз лучше, чем у АВР. (А редактор здесь...у ПИКа 3.8 )


Последний раз редактировалось architector Сб фев 07, 2009 19:34, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 19:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
а у СуперПроца - еще лучше, у него любая программа в 1 байт влазит. И команда всего одна - СДЕЛАТЬ.ВСЕ!

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 19:40 
Не в сети
Аватара пользователя

Зарегистрирован: Вт ноя 06, 2007 21:23
Сообщения: 227
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
:) Ваше право чем Вы подпитываетесь из информационного пространств, Архитектор.

А скажи-ка вот вы проектируете микроконтроллер видимо по шаблону, а какие изыскания вы провели для оценок?
Видите ли я к тезисам иногда отношусь,так сказать плоховато, ведь и придумать вперед можно. Просто я пытаюсь из Вас выцарапать то, что относится к Вашим действиям. По мере чтения Ваших трактатов у меня складывается впечатление, что воды налито, а где булочка с изюминкой-то?!
Если вы думаете что с такими рассуждениями "витая в облаках" вас когда-нить да куда-нить да допустят в серьезное учреждение?!
Эйфория должна была уже пройти. И вспомните про три стадия изобретения: Фантастика, А зачем, Вот это да!
На какой ВЫ стадии определитесь сами.

Мы говорим о эффективности команд или компилятор и трансляторов для той или иной платформы???


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 19:58 
Не в сети

Зарегистрирован: Сб янв 24, 2009 10:06
Сообщения: 96
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
WingLion писал(а):
СДЕЛАТЬ.ВСЕ![/b]

.....PIC18 – 324 (3.8)
Atmega8 - 354 (4.1)
С администраторами не спорю. Однако ошибка в редакторе есть (или была). И все таки есть. ПИК дб 3.8.
Продолжаю редактировать - ставлю пробел перед закрывающей скобкой (3.8 )
Надеюсь получится без ошибок. Предварительный просмотр показывает все верно.


Последний раз редактировалось architector Вс фев 08, 2009 12:13, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 23:43 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
architector писал(а):
Цитата:
Однако ошибка в редакторе есть (или была). И все таки есть. ПИК дб 3.8.
Скоро весь Форум захихикает от (3.8)
Продолжаю редактировать - ставлю пробел перед закрывающей скобкой (3.8 )
Надеюсь получится без хихи.


Ошибки редактора нет. Если не нравятся смайлики, их можно отключить в профиле. и даже в отдельном сообщении.
А чтобы не было сюрпризов, рекомендуется перед отправкой сообщения делать предварительный просмотр, исправлять опечатки и разумно компенсировать недостатки форумного движка.

п.с. А гавкание на слона (aka придирки не по делу) - со времен Крылова считается некультурным.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 20:54 
Не в сети

Зарегистрирован: Сб янв 24, 2009 10:06
Сообщения: 96
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
WingLion писал(а):
а у СуперПроца - еще лучше, у него любая программа в 1 байт влазит. И команда всего одна - СДЕЛАТЬ.ВСЕ!

Мне настоятельно посоветовали не пользоваться доморощенными рейтингами, а взять бенчмарки и на них оценить эффективность системы команд М8. Я это сделал за выходные, используя тесты TI для MSP430, и получил результаты. У меня эффективность М8 превышает эффективность Mega в несколько раз. Кстати, тоже получили разработчики TI для MSP430 относительно других МК.
****Вывод. Не верьте заказным бенчам, не верьте мне, не верьте фирме TI и прочим - верьте самому себе, здравому смыслу, своему опыту, академикам и интуиции.
****** Смайлики у меня получились из-за проблем ...., о чем было указано.
***** Написание тестов выявило существенные недостатки архитектуры М8 по организации доступа к данным. Поэтому я задумался о концепциях доступа к данным. Продуманное выложу чуть позже
********Однако судя по тому, как идет обсуждение М8 …и собственного опыта, мне, кажется, это нужно вынести в отдельную подтему «»….или как?

******* Но не дают гены покоя*********************************
К вопросу о совместимости системы команд и ЯВУ (один из показателей эффективности МК)
Остальное я упоминал – минимальный объем кода, эффективная реализация в аппаратуре (в тактах, площади, потреблении…), а также концептуальность системы команд, ее ортогональность и возможность расширения (развития).

**Итак о совместимости с ЯВУ***Почитал описание языково-ориентированного (под Си, Паскаль, Модула…) процессора КРОНОС, разработанного и сделанного в конце 80-х в Новосибирске, опередившего Интел с их Пнем на много лет.
Так вот, академики из Новосибирского филиала РАН выбрали для его машинной реализации 0-адресную систему команд, как наиболее эффективную…. Кто прав – академики из РАН или те, кто предлагает «морэ регистров» для обеспечения совместимости с ЯВУ вместо стековой архитектуры? Вопрос для меня не из простых?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 22:35 
Не в сети

Зарегистрирован: Сб янв 24, 2009 10:06
Сообщения: 96
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Alex. Мы не антогонисты. Вы хотите что-то сделать, "разорвать" и т.д. Однако этого еще нет - готового для Вас.
Мы находимся на этапе фэнтези, где всякое дельное предложение может превратиться в реальность.
Но даже эта фэнтези на трех стандартных тестах МК демонстрирует преимущества предлагаемой системы команд М8.
Остальное я сказал в Форуме...
А ссылаться на книги...для техникума....почитайте книгу "Вычислительная техника и ее применение" под редакцией С.А.Лебедева, Госэнергоиздат 1959, Ленинград (она мне от дяди полковника досталась). Там приведены примеры вычислительных устройств на основе механичесикх кулачков, интеграторов и планиметров. И это еще работает в наших боевых ......
В итоге. Вы либо участвуете, либо ждете. Когда все будет готово для Вас, я сообщу.

*****************Alexander.!!!! Это писалось лично. Как попало...Извини....


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 17, 2009 21:25 
Не в сети

Зарегистрирован: Сб янв 24, 2009 10:06
Сообщения: 96
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
WingLion писал(а):
перед отправкой сообщения надо делать предварительный просмотр..... и разумно компенсировать недостатки форумного движка. aka придирки не по делу.

***Предварительно посмотрел***

WingLion писал(а):
«Здесь я опишу систему команд некоего гипотетического Forth-процессора, которого должно быть достаточно для реализации Форта. Эта достаточность будет проверяться на практике путем создания форт-процессора с такой системой команд в ПЛИС и проверки возможности реализации на нем Форта. В процессе работы в это описание, могут быть добавлены новые команды или выброшены излишние».


**Откликнулся. Но не там, а здесь..и не только Вам.
В левых колонках приведены «команд некоего гипотетического Forth-процессора» . В правой колонке таблицы приведены добавленные и не добавленные, а так же выброшеные излишние байтовые команды стекового процессора M8 (можете его переименовать в F8 ).
Прим.1. Все это сделано на «берегу…» из «сена и соломы..» без «создания форт-процессора с такой системой команд в ПЛИС и проверки возможности реализации на нем Форта»
Прим.2. В кавычках я цитирую?

Мнемо________ Содержание__________________________________________ Стек ____*****M8 (1 байт)
LIT ________ Положить на стек данных непосредственные данные ________( -- data ) ****Ldw#
LIT address @ __Разыменовать ___________________________ ( address -- data )___****k @ldw/ (R)+ldw/ (R)@ldw
LIT address ! __записать в память данные, лежащие в стеке под вершиной. ( data, address -- ) ****k @stw/ k (R)@stw
DUP_____ продублировать вершину стека ________________ _______ ( d1 -- d1,d1 ) ****DUPw/ K DUPw
DROP_____ Удалить верхний элемент стека ________ ________ ______ ( d2,d1 -- d2 ) ****DROPw
OVER_____продублировать элемент стека, лежащий под вершиной______ ( d2,d1 -- d2,d1,d2 ) ****2 DUPw
SWAP_____ поменять местами два верхних элемента стека _____________ ( d2,d1 -- d1,d2 ) ****Mem SWAPw/ Mem K SWAPw
Bin_____ Арифметические и логические операции на стеке данных________ ( a,b – a+b ) ****Mem Binw/ Mem Binw#
Un ________ ________ ________ ________ ________ _______________ ( а – un a ) ****Mem unw
?BRANCH__ переход ( addr -- ) ________ ________ ________________+_____ ****в М8 все не так.....
CALL/ret ___вызов подпрограммы ________( addr.. -- ) ________ ________ ________ ***CALL/ret
>R________переместить верхний элемент стека данных на стек возвратов________ ( a -- ) ****SpushR
R>________переместить верхний элемент стека возвратов на стек данных________ ( -- a ) ****RpopS
RDROP_____удалить верхний элемент стека возвратов ________________( a -- )_____****RDROP
R@________скопировать верхний элемент стека возвратов ________( a -- a,r ) ____*****K RpopS/ K (R)+ldw/ K (R)@ldw

Примечания. К – необязательный префикс константы, с его присутствием в процессоре М8 обеспечиваются – доступ к произвольному элементу стека относительно его верхушки и кое что еще многое.
Мем – необязательный префикс операнда (адреса). Без него…, а с ним…из нуль адресной системы команд получается «помесь» из одно и двухадресных команд.
*** мнемоника команд и способы адресации приведены условно...
PS... Подскажите, как выложить у Вас на форуме PDFник на 28 листов и указать на него ссылку - называется он "Руководство программиста..."


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 18, 2009 06:35 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
architector писал(а):
PS... Подскажите, как выложить у Вас на форуме PDFник на 28 листов и указать на него ссылку - называется он "Руководство программиста..."

Вариант 1. разместить его на любом вменяемом хостинге и дать ссылку.
Вариант 2. напрячь кго-нибудь (например, админа) сделать вариант 1, выслав PDF через e-mail.

architector писал(а):
Примечания. К – необязательный префикс константы, с его присутствием в процессоре М8 обеспечиваются – доступ к произвольному элементу стека относительно его верхушки и кое что еще многое.


В Форте "префиксом константы" является слово LIT. Добавлять его в семантику других слов смысла нет, особенно, если это добавление требует использования префикса, который сам по себе не короче любой команды, в том числе и команды LIT. Доступ к глубоким слоям стека - тоже довольно сомнительное преимущество.
И, в результате, фактически имеем излишнюю сущность, которая с точки зрения минимализма должна быть просто выкинута, ввиду ненужности.

architector писал(а):
Мем – необязательный префикс операнда (адреса). Без него…, а с ним…из нуль адресной системы команд получается «помесь» из одно и двухадресных команд.
*** мнемоника команд и способы адресации приведены условно...

Возражения почти те же. 0-адресная система команд вполне самодостаточна, и утяжеление ее дополнительными командами, да еще и противорячащими самой концепции 0-адресного процессора, не есть "правильный путь", хотя никто и не запрещает.

п.с. я совершенно не против префиксов. Если посмотреть мою последнюю тему про форт-процессор, то это прекрасно видно. Там префиксы используются для кодирования арифметико-логических команд (в нуль-адресной концепции).

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 22:45 
Не в сети

Зарегистрирован: Сб янв 24, 2009 10:06
Сообщения: 96
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
WingLion писал(а):
Вариант 1. разместить его на любом вменяемом хостинге и дать ссылку.
Вариант 2. напрячь кго-нибудь (например, админа) сделать вариант 1, выслав PDF через e-mail.

.....
Возражения .....п.с. я совершенно не против префиксов. ....префиксы используются для кодирования арифметико-логических команд (в нуль-адресной концепции)

Благодарю за первое.
Просто я на некоторое время расхостился, разлогинился и с интернетом проблемы... Поэтому расчитывал, что на форуме есть место в смысле общего раздела типа «статьи», где можно выложить свое «большое PDF», безусловно под цензурой и разрешения администрации.
Благодарю за внимание к моему вопросу в столь позднее, раннее, утреннее время......"Настоящий Программист никогда не работает с 9 утра до 5 вечера. Если вы увидите Настоящего Программиста за компьютером после 9 часов утра – значит он не спал всю ночь".

О префиксах думаю. Но вы не правы..Там не все так просто. Читаю статью Горобца о роли префиксов, еще диссертацию некой аспирантки и все более в этом убеждаюсь.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 20, 2009 08:40 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
architector писал(а):
О префиксах думаю. Но вы не правы..Там не все так просто. Читаю статью Горобца о роли префиксов, еще диссертацию некой аспирантки и все более в этом убеждаюсь.


Предлагаю еще посмотреть и подумать о Befunge 93 \ если ещё не сталкивались.
http://fforum.winglion.ru/viewtopic.php?t=966

P.S. Размер команд переходов в программе тоже можно попробовать минимизировать
используя двумерное ( n-ое) адресное поле:).
\ почти блок схемы в памяти:)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 269 ]  На страницу Пред.  1 ... 14, 15, 16, 17, 18

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB