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

 
 
7 страниц V  « < 3 4 5 6 7 >  
Closed TopicStart new topic
> ARM начинающим
aaarrr
сообщение Oct 18 2005, 16:41
Сообщение #61


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Круто, только write-back не учитывается и выход кривоват smile.gif. Что интересно, ADS 1.2 городит такую же фигню, но с более прямым циклом.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Oct 18 2005, 17:32
Сообщение #62


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



То же от IAR. Оценивать хорошо это или плохо не бурусь.

ARM
Код
a:
     DS8 4096
`b`:
     DS8 4096

copy0:
     STMDB       SP!,{R4-R11}      ;; Push
     MOV         R2,#+0x80
??copy0_0:
     MOV         R3,R1
     MOV         R12,R0
     LDMIA       R12,{R4-R11}
     STMIA       R3,{R4-R11}
     ADD         R0,R0,#+0x20
     ADD         R1,R1,#+0x20
     SUBS        R2,R2,#+0x1
     BNE         ??copy0_0
     LDMIA       SP!,{R4-R11}      ;; Pop
     BX          LR                ;; return

main:
      STR         LR,[SP, #-4]!    ;; Push
      LDR         R0,??main_0      ;; a
      ADD         R1,R0,#+0x1000
      BL          copy0
      LDR         LR,[SP], #+0x4    ;; Pop
      BX          LR                ;; return
??main_0:
      DC32        a


Thumb
Код
a:
      DS8 4096
`b`:
      DS8 4096
      PUSH        {R4,LR}
      MOV         R2,#+0x80
??copy0_0:
      MOV         R4,#+0x20
??copy0_1:
      SUB         R4,R4,#+0x4
      LDR         R3,[R0, R4]
      STR         R3,[R1, R4]
      BNE         ??copy0_1
      ADD         R0,#+0x20
      ADD         R1,#+0x20
      SUB         R2,R2,#+0x1
      BNE         ??copy0_0
      POP         {R4}
      POP         {R0}
      BX          R0                ;; return

main:
       PUSH        {LR}
       LDR         R0,??main_0       ;; a
       MOV         R1,#+0x80
       LSL         R1,R1,#+0x5       ;; #+0x1000
       ADD         R1,R0,R1
       BL          copy0

       POP         {R0}
       BX          R0                ;; return
       NOP        
??main_0:
       DC32        a
Go to the top of the page
 
+Quote Post
iit
сообщение Oct 19 2005, 05:34
Сообщение #63


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 8-11-04
Из: Томск
Пользователь №: 1 070



А что, писание на асме это "западло"?
Я все проекты делаю на асме, потому как видеть что творит С с кодом сил не хватает.
В чем С дает выигрыш?
Знаю начнете говорить о времени разработки, о переносимости с одного компилятора на другой, так это все ерунда.
За время что я работаю у меня накопилось куча функций, которые переходят из одного проекта в другой без изменений (типа арифметика, УАРТ и т.п.)
А при переходе с одного компилятора на другой (при том же процессоре) для асм в основном заголовочные файлы меняются ( a equ 10, или equ a,10) - это не долго. Да и зачем на асме переходить из компилера в компилер? За мою практику такой неизбежной необходимости не возникало.
Засада конечно переносить проект с одной архитектуры на другую, но для меня "лучше день потерять и за полчаса долеьтеть".
И вообще причем тут крылья - главное хвост!
Go to the top of the page
 
+Quote Post
Виктория
сообщение Oct 19 2005, 09:55
Сообщение #64


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



To aaarrr

Больше сооптимизировать не удалось! sad.gif
Но, по крайней мере компилятор использует ldm/stm. Вообще в какой-то из функций bcopy или memcpy они тоже должны использоваться (или у Вас есть исходники memcpy???) и может быть более оптимально (с большим числом одновременно загружаемых регистров, без дополнительной перезагрузки в цикле и т.п.).

Действия же компилятора в приведенном примере объясняются фиксированным распределением регистров процессора по функциям (например, в качестве указателей он выбирает, в первую очередь, lr, ip; параметры функции - r0,r1,... и т.п. ). Причем для разных компиляторов (а уж тем более процессоров это может быть по разному).

Невнимательно прочитала последние сообщения. Конечно, пример от VladislavS для IAR - почти идеально blush.gif

Зато достоинства GNU компилятора (здесь немного bb-offtopic.gif ) вот в этом
Цитата
Hardware Models and Configurations.
AMD 29K Options
ARC Options...78
ARM/StrongARM Options ........................78
ARM THUMB Options ..........83
Clipper Options .............85
DEC Alpha Options ..........85
Hitachi H8/300 Options ..............89
Hitachi SH Options ....................90
HPPA Options.............................90
IBM RS/6000 and PowerPC Options......................92
IBM RT Options .........................101
Intel x86 Options........................102
Intel 960 Options...........................105
Matsushita MN10200 Options ...................107
Matsushita MN10300/AM33 Options .....................107
MIPS Options..................................107
Mitsubishi D10V Options .......................112
Mitsubishi M32R/D/X Options..................................113
Motorola 68000 Options .......................................................114
Motorola 88000 Options ......................................................116
NEC V850 Options .................................119
SPARC Options ....................120
System V Options .........................................124


Это, в какой-то степени, и ответ всем asm-программерам smile.gif
Переход к новому типу МП происходит с более грамотных позиций. И еще - программирование на Си - использование более высокой технологии, которая в общем случае далее более качественный продукт с меньшими трудозатратами. Пример: кто как может обед разогревать на работе - на костре, кипятильником или в микроволновке. Извините, за легкий offtopic.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Oct 19 2005, 10:32
Сообщение #65


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Vic1 @ Oct 19 2005, 12:55)
To aaarrr


Зато достоинства GNU компилятора (здесь немного  bb-offtopic.gif ) вот в этом
Цитата
Hardware Models and Configurations.
AMD 29K Options
ARC Options...78
ARM/StrongARM Options ........................78
ARM THUMB Options ..........83
Clipper Options .............85
DEC Alpha Options ..........85
Hitachi H8/300 Options ..............89
Hitachi SH Options ....................90
HPPA Options.............................90
IBM RS/6000 and PowerPC Options......................92
IBM RT Options .........................101
Intel x86 Options........................102
Intel 960 Options...........................105
Matsushita MN10200 Options ...................107
Matsushita MN10300/AM33 Options .....................107
MIPS Options..................................107
Mitsubishi D10V Options .......................112
Mitsubishi M32R/D/X Options..................................113
Motorola 68000 Options .......................................................114
Motorola 88000 Options ......................................................116
NEC V850 Options .................................119
SPARC Options ....................120
System V Options .........................................124


Это, в какой-то степени, и ответ всем asm-программерам smile.gif

*



Как получены эти цифры?
Прошу ответить болле подробно. Меня интересует сравнение ARM и V850.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 19 2005, 10:37
Сообщение #66


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(iit @ Oct 19 2005, 10:34)
А что, писание на асме это "западло"?

в общем да

Цитата
Я все проекты делаю на асме, потому как видеть что творит С с кодом сил не хватает.

Много вы видели? Те листинги, что приводились выше, чем ужасают?

Цитата
В чем С дает выигрыш?
Знаю начнете говорить о времени разработки, о переносимости с одного компилятора на другой, так это все ерунда.

Не ерунда. Особенно о времени разработки и сопровождаемости.

Цитата
За время что я работаю у меня накопилось куча функций, которые переходят из одного проекта в другой без изменений (типа арифметика, УАРТ и т.п.)
А при переходе с одного компилятора на другой (при том же процессоре) для асм в основном заголовочные файлы меняются ( a equ 10, или equ a,10) - это не долго. Да и зачем на асме переходить из компилера в компилер? За мою практику такой неизбежной необходимости не возникало.
Засада конечно переносить проект с одной архитектуры на другую, но для меня "лучше день потерять и за полчаса долеьтеть".
И вообще причем тут крылья - главное хвост!
*

а вы знаете, что такое CVS, или SVN? Или тоже неприемлете, покуда нафиг не нужно?


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Виктория
сообщение Oct 19 2005, 10:39
Сообщение #67


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Quote - это лист содержания описания компилятора (цифры - номера страниц)
Приношу извинения.

Приведено для иллюстрации, что в рамках одного компилятора я могу использовать различные МС (из этого списка) blush.gif
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 19 2005, 10:49
Сообщение #68


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(VladislavS @ Oct 18 2005, 22:32)
То же от IAR. Оценивать хорошо это или плохо не бурусь.

*

Это какой версией компилятора компилировалось? Какие опции оптимизации были установлены?


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 19 2005, 12:08
Сообщение #69


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Vic1 @ Oct 19 2005, 12:55)
To aaarrr

Больше сооптимизировать не удалось!  sad.gif
Но, по крайней мере компилятор использует ldm/stm. Вообще в какой-то из функций bcopy или memcpy они тоже должны использоваться (или у Вас есть исходники memcpy???) и может быть более оптимально (с большим числом одновременно загружаемых регистров, без дополнительной перезагрузки в цикле и т.п.).


Да, memcpy умнее написана, хотя её ничего не стоит посадить в
лужу невыравненным адресом. И написана она, конечно, на АСМе smile.gif

Цитата
Это, в какой-то степени, и ответ всем asm-программерам  smile.gif
Переход к новому типу МП происходит с более грамотных позиций. И еще - программирование на Си - использование более высокой технологии, которая в общем случае далее более качественный продукт с меньшими трудозатратами. Пример:  кто как может обед разогревать на работе - на костре, кипятильником или в микроволновке. Извините, за легкий offtopic.
*


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

P.S. Всю эту дрянь из микроволновки я не ем ©
Go to the top of the page
 
+Quote Post
Виктория
сообщение Oct 19 2005, 12:31
Сообщение #70


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



To [/B]aaarrr[B]
Цитата
Да, memcpy умнее написана, хотя её ничего не стоит посадить в
лужу невыравненным адресом. И написана она, конечно, на АСМе


Разумеется на asm-e, кто же спорит. Исходника нету?

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


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

Если пример с кулинарией Вам показался неудачным (спорить не буду, шашлык на костре все любят), то примеров новых технологий, появившихся совсем недавно, - множество (в строительстве, медицине, ...). Опять offtopic получается.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 19 2005, 12:33
Сообщение #71


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(aaarrr @ Oct 19 2005, 17:08)
Цитата(Vic1 @ Oct 19 2005, 12:55)
To aaarrr

Больше сооптимизировать не удалось!  sad.gif
Но, по крайней мере компилятор использует ldm/stm. Вообще в какой-то из функций bcopy или memcpy они тоже должны использоваться (или у Вас есть исходники memcpy???) и может быть более оптимально (с большим числом одновременно загружаемых регистров, без дополнительной перезагрузки в цикле и т.п.).


Да, memcpy умнее написана, хотя её ничего не стоит посадить в
лужу невыравненным адресом.

Точно также, как и вашу асмовскую функцию. Только memcpy это точно все корректно отыграет, пусть даже создав менее оптимальный код, копирующий байтами, а не словами. А использование вашей функции с невыровненными адресами приведет к непредсказуемым эффектам.


Цитата
И написана она, конечно, на АСМе smile.gif


Например, в IAR memcpy написана нак inline функция в string.h
Код
   #pragma inline
   void *memcpy(void *s1, const void *s2, size_t n)
     /* Copied from memcpy.c */
   {       /* copy char s2[n] to s1[n] in any order */
     char *su1 = (char *)s1;
     const char *su2 = (const char *)s2;
 
     for (; 0 < n; ++su1, ++su2, --n)
       *su1 = *su2;
     return (s1);
   }


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

Вы серьезно полагаете, что квалификация программиста тем выше, чем более низкоуровненый язык он использует?


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 19 2005, 12:46
Сообщение #72


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Andy Mozzhevilov @ Oct 19 2005, 15:33)
Точно также, как и вашу асмовскую функцию. Только memcpy это точно все корректно отыграет, пусть даже создав менее оптимальный код, копирующий байтами, а не словами. А использование вашей функции с невыровненными адресами приведет к непредсказуемым эффектам.


А кто ее будет так использовать? Ежели это моя функция, то вызывать её буду только я и правильно.

Цитата
Например, в IAR memcpy написана нак inline функция в string.h
Код
   #pragma inline
   void *memcpy(void *s1, const void *s2, size_t n)
     /* Copied from memcpy.c */
   {       /* copy char s2[n] to s1[n] in any order */
     char *su1 = (char *)s1;
     const char *su2 = (const char *)s2;
 
     for (; 0 < n; ++su1, ++su2, --n)
       *su1 = *su2;
     return (s1);
   }


Ужасно! Всегда считал IAR кривым компилером.

Цитата
Вы серьезно полагаете, что квалификация программиста тем выше, чем более низкоуровненый язык он использует?
*


Нет, я считаю, что квалификация программиста тем ниже, чем более низкоуровневый язык он не способен понять.
Go to the top of the page
 
+Quote Post
Виктория
сообщение Oct 19 2005, 12:52
Сообщение #73


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Хм, а в обратную сторону (повышения уровня)? Разве это не верно?
Go to the top of the page
 
+Quote Post
Виктория
сообщение Oct 19 2005, 13:16
Сообщение #74


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Добавление к квалификации и молодежного сленга "глючный компилятор"
Файл внизу (переименован из string2.h, GNU C)
Прикрепленные файлы
Прикрепленный файл  string2.txt ( 43.03 килобайт ) Кол-во скачиваний: 72
 
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Oct 19 2005, 13:41
Сообщение #75


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Ваш креатив - образчик мысли, слога,
До Вас такого точно не писали!
Вам будет зачтено пред ликом Бога,
Что Вы его для нас публиковали...


Вы же проффесионалы - доставайте сразу галстуки и меряйтесь.
А теперь серьёзно , за сравнение вам зачёт.
Теперь ни зачёт по пункту кровесмешения асма и сей и использование рам функций.
Ни кто не сопротивляется по поводу иногда маразма компиляции. Пиши на асме, перекладывать ДСП функции на АРМ и хвалится тем что выжимаем максимум скорости - я считаю маразмом, потому что есть ОМАП двухядерный, нет желания - внешний ДСП ставте.
С - повторное использование кода, ведь пользуетесь исли нет то горш цена.

Что в сухом остатке
1. Сравнение кода генерируемого компилятором
2. Флейм.
3. Совместное использование асм и С.

Впрочем об этом давно было известно.


--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post

7 страниц V  « < 3 4 5 6 7 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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