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

 
 
35 страниц V  « < 25 26 27 28 29 > »   
Reply to this topicStart new topic
> Pascal для AVR
Leka
сообщение Dec 14 2008, 10:57
Сообщение #391


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

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



' count=' тут:
Код
$024B    $E200        LDI    R16, 32
$024C    $930D        ST    X+, R16
$024D    $E603        LDI    R16, 99
$024E    $930D        ST    X+, R16
$024F    $E60F        LDI    R16, 111
$0250    $930D        ST    X+, R16
$0251    $E705        LDI    R16, 117
$0252    $930D        ST    X+, R16
$0253    $E60E        LDI    R16, 110
$0254    $930D        ST    X+, R16
$0255    $E704        LDI    R16, 116
$0256    $930D        ST    X+, R16
$0257    $E30D        LDI    R16, 61
$0258    $930D        ST    X+, R16
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 14 2008, 10:59
Сообщение #392


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Leka @ Dec 14 2008, 13:57) *
' count=' тут:

Дурдом sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 14 2008, 11:54
Сообщение #393


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Ну так что там на счет шляпы ? Можете какой-нибудь химией посыпать ))) Типа усилителя вкуса и аромата )))
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 14 2008, 12:16
Сообщение #394


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Огурцов @ Dec 14 2008, 14:54) *
Ну так что там на счет шляпы ?

А чего это уже второй раз разговор о шляпах заводите?
Скомпилили простейший исходник каким-то компилятором в мутный код, допустим, что он рабочий. Ну и? Добавтьте к своей коллекции паскалевских компиляторов еще один и положите на полочку.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 14 2008, 12:27
Сообщение #395


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(zltigo @ Dec 14 2008, 12:16) *
А чего это уже второй раз разговор о шляпах заводите???

Такжеж вы обвинили меня в подлоге. Вот и намекаю.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 14 2008, 12:29
Сообщение #396


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Огурцов @ Dec 14 2008, 15:27) *
Такжеж вы обвинили меня в подлоге.

Ошибалсяsad.gif. Повторяю - получен некий мутный код. Вопрос причем тут шляпа?
И где тут про подлог:
Цитата
Полагаю просто нажали "кнопочку" мышкй и получили "результат". Проблема только в том, что это не результат.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
forever failure
сообщение Dec 14 2008, 12:37
Сообщение #397


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Абасраццо!!! Неужели !!! Случилось !!!
Наконец-то !!! То, о чём так неоднократно говорили большевики стопяццот страниц назад было выложено - прошивка для АВР, скомпилённая паскальским компилером !
Значит, всё таки паскалёвый компилятор для АВР есть в природе.

Тема раскрыта, зачот.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 14 2008, 13:16
Сообщение #398


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(forever failure @ Dec 14 2008, 15:37) *
Значит, всё таки паскалёвый компилятор для АВР есть в природе.

Совершенно очевидно, что и не один. Тут "целый диск" поминали. И это никто не оспаривал. Вопрос в их пригодности для практического применения за пределами "контроллеров светодиодов". Качество кода опять-же при рассмотрении не впечатлило, хотя я с AVR редко работаю... Кому не лень, компильните ферзей под IAR - сравним. Хоть какая-то польза будет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
733259
сообщение Dec 14 2008, 13:47
Сообщение #399


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



Такое впечатление, что оптимизация отсутсвует:
Цитата
^NF.apas,55 :: arow[pos + 1] := arow[pos] or place;
$0126 $E340 LDI R20, @_arow
$0127 $E051 LDI R21, @@_arow
$0128 $9020 012E LDS R2, _pos
$012A $9030 012F LDS R3, _pos+1
$012C $E001 LDI R16, 1
$012D $2711 CLR R17
$012E $2C02 MOV R0, R2
$012F $2C13 MOV R1, R3
$0130 $0E00 ADD R0, R16
$0131 $1E11 ADC R1, R17
$0132 $0C00 LSL R0
$0133 $1C11 ROL R1
$0134 $2E44 MOV R4, R20
$0135 $2E55 MOV R5, R21
$0136 $0C40 ADD R4, R0
$0137 $1C51 ADC R5, R1
$0138 $2C02 MOV R0, R2
$0139 $2C13 MOV R1, R3
$013A $0C00 LSL R0
$013B $1C11 ROL R1
$013C $0E04 ADD R0, R20
$013D $1E15 ADC R1, R21
$013E $2DA0 MOV R26, R0
$013F $2DB1 MOV R27, R1
$0140 $902D LD R2, X+
$0141 $903D LD R3, X+
$0142 $9000 0232 LDS R0, _place
$0144 $9010 0233 LDS R1, _place+1
$0146 $2802 OR R0, R2
$0147 $2813 OR R1, R3
$0148 $2DA4 MOV R26, R4
$0149 $2DB5 MOV R27, R5
$014A $920D ST X+, R0
$014B $921D ST X+, R1
- видно, что 2 раза делаются сложения и сдвиги для [pos] и [роs + 1], ни одного movw почему-то, хотя вроде собрано для 88 атмеги.
Может что-то включить в настройках?
На первый взгляд код ужасен.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Dec 14 2008, 13:47
Сообщение #400


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Кому не лень, компильните ферзей под IAR


Отсюда - http://www.wasm.ru/forum/viewtopic.php?pid=128277#p128277 взял только функцию queens и внес небольшие косметические изменения
Код
unsigned int count = 0;

void queens(unsigned int N)
{
  unsigned long arow[32], aleft[32], aright[32], aposs[32];
  unsigned long    poss, place, val = (1<<N)-1;
  unsigned char pos=1;
  
  arow[1]=aleft[1]=aright[1]=0;
  poss=aposs[1]=val>>(N/2);
  
  while(pos)
  {
    if(poss)
    {
      place = poss & -poss;
      poss &= ~place;
      if(pos==1 && !poss && (N & 1))count<<=1;
      if(pos!=N)
      {
    aposs[pos]=poss;
    poss=arow[pos+1]=arow[pos]|place;
    poss|=aleft[pos+1]=(aleft[pos]|place)<<1;
    poss|=aright[pos+1]=(aright[pos]|place)>>1;
    aposs[++pos]=poss=~(poss) & val;
      }
      else
      {
    ++count;
      }
    }
    else
    {
      poss=aposs[--pos];
    }
  }
}


- результат в IAR AVR 5.11B
Код
   Maximum stack usage in bytes:

     Function CSTACK RSTACK
     -------- ------ ------
     queens     526      4


   Segment part sizes:

     Function/Label Bytes
     -------------- -----
     count             2
     queens          506
      Others           6


506 bytes in segment CODE
   6 bytes in segment INITTAB
   2 bytes in segment NEAR_Z

506 bytes of CODE memory (+ 6 bytes shared)
   2 bytes of DATA memory


Можем в симуляторе глянуть количество тактов. Выбирайте N


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 14 2008, 13:50
Сообщение #401


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Rst7 @ Dec 14 2008, 16:47) *
Можем в симуляторе глянуть количество тактов. Выбирайте N

Да полагаю можно просто на листинг посмотреть.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Rst7
сообщение Dec 14 2008, 13:59
Сообщение #402


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
можно просто на листинг посмотреть.


Да там все в порядке smile.gif Ну можно конечно немного более оптимально написать, но это не ко мне smile.gif



Конечно, если ограничиться 15ю ферзями, то будет заметно короче (вместо long - short), и быстрее

Код
   Maximum stack usage in bytes:

     Function CSTACK RSTACK
     -------- ------ ------
     queens     258      4


   Segment part sizes:

     Function/Label Bytes
     -------------- -----
     count             2
     queens          316
      Others           6


316 bytes in segment CODE
   6 bytes in segment INITTAB
   2 bytes in segment NEAR_Z

316 bytes of CODE memory (+ 6 bytes shared)
   2 bytes of DATA memory


Листинги в аттаче
Прикрепленный файл  lst.txt ( 12.74 килобайт ) Кол-во скачиваний: 238


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 14 2008, 14:14
Сообщение #403


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Rst7 @ Dec 14 2008, 16:59) *
Да там все в порядке smile.gif

Как там ... "Имеющий глаза, да увидит. Имеющий разум, да поймет"


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Rst7
сообщение Dec 14 2008, 14:23
Сообщение #404


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Ну так уж и быть. Оптимально было бы накодить нечто такое
Код
typedef unsigned char UREG;
typedef unsigned long QV;
typedef struct
{
  QV arow;
  QV aleft;
  QV aright;
  QV aposs;
}QA;

unsigned int queens(unsigned int N, unsigned int count)
{
  QA a[32];
  QV poss, place, val = (1<<N)-1;
  UREG pos=1;
  
  a[1].arow=a[1].aleft=a[1].aright=0;
  poss=a[1].aposs=val>>(N/2);
  
  while(pos)
  {
    QA *p=a+pos;    
    if(poss)
    {
      place = poss & -poss;
      poss &= ~place;
      if(pos==1 && !poss && (N & 1))count<<=1;
      if(pos!=N)
      {
    p[0].aposs=poss;
    poss=p[1].arow=p[0].arow|place;
    poss|=p[1].aleft=(p[0].aleft|place)<<1;
    poss|=p[1].aright=(p[0].aright|place)>>1;
    p[1].aposs=poss=~(poss) & val;
    pos++;
      }
      else
      {
    ++count;
      }
    }
    else
    {
      poss=p[-1].aposs;
      pos--;
    }
  }
  return count;
}


Код
   Maximum stack usage in bytes:

     Function CSTACK RSTACK
     -------- ------ ------
     queens     524      4


   Segment part sizes:

     Function/Label Bytes
     -------------- -----
     queens          434


434 bytes in segment CODE

434 bytes of CODE memory

Errors: none
Warnings: none


Листинг в аттаче
Прикрепленный файл  lst2.txt ( 6.76 килобайт ) Кол-во скачиваний: 134


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Leka
сообщение Dec 14 2008, 14:29
Сообщение #405


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

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



А результат работы АВР как смотреть будем? Так что для корректного сравнения надо еще аналогичный вывод приделать.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:44
Рейтинг@Mail.ru


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