|
|
  |
свежак KGP win32/arm/avr/mips/m68k, GNU tools chain |
|
|
|
Nov 15 2008, 13:23
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(Rst7 @ Nov 13 2008, 08:49)  Как-то IAR с этим справляется на ура: бз-з-з-з... Странно. WinAVR-20060421 (3.4.6) -Os Код .global netw_memcpy .type netw_memcpy, @function netw_memcpy: /* prologue: frame size=0 */ /* prologue end (size=0) */ movw r26,r24 movw r30,r22 .L7: tst r20 breq .L1 ld r24,Z+ st X+,r24 subi r20,lo8(-(-1)) rjmp .L7 .L1: ret /* epilogue: frame size=0 */ WinAVR-20060421 (3.4.6) -O2 и -O3 Код .global netw_memcpy .type netw_memcpy, @function netw_memcpy: /* prologue: frame size=0 */ /* prologue end (size=0) */ movw r26,r24 movw r30,r22 rjmp .L7 .L9: ld r24,Z+ st X+,r24 subi r20,lo8(-(-1)) .L7: tst r20 brne .L9 ret /* epilogue: frame size=0 */ WinAVR-20070525 (4.1.2) и WinAVR-20071221 (4.2.2) -Os, -O2 и -O3 Код .global netw_memcpy .type netw_memcpy, @function netw_memcpy: /* prologue: frame size=0 */ /* prologue end (size=0) */ tst r20 breq .L5 movw r26,r22 movw r30,r24 .L4: ld r24,X+ st Z+,r24 subi r20,lo8(-(-1)) brne .L4 .L5: ret /* epilogue: frame size=0 */ Что-то их не туда понесло в более свежих версиях  То-то я не спешу менять...
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Nov 16 2008, 21:12
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
получилось опции -Os Код void cpy ( char* x , char* y , size_t s ) { if ( !s ) return; size_t t = s; do { *(y++) = *(x++); } while( --t ); } Код 000000DC: 01FC MOVW R30,R24 Copy register pair 000000DD: 01DB MOVW R26,R22 Copy register pair 22: if ( !s ) return; 000000DE: 1541 CP R20,R1 Compare 000000DF: 0551 CPC R21,R1 Compare with carry 000000E0: F029 BREQ PC+0x06 Branch if equal 26: *(y++) = *(x++); 000000E1: 9181 LD R24,Z+ Load indirect and postincrement 000000E2: 938D ST X+,R24 Store indirect and postincrement 28: while( --t ); 000000E3: 5041 SUBI R20,0x01 Subtract immediate 000000E4: 4050 SBCI R21,0x00 Subtract immediate with carry 000000E5: CFF8 RJMP PC-0x0007 Relative jump 000000E6: 9508 RET Subroutine return это вроде то что нужно что характерно, при замене типа счетчика на char начинается маразм.
|
|
|
|
|
Nov 16 2008, 21:45
|

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

|
Цитата(klen @ Nov 16 2008, 23:12)  что характерно, при замене типа счетчика на char начинается маразм. Дык надо лечить, тем более, что явно чтото сломали. Зачем мне int в счетчике, если нативный тип для AVR - unsigned char. Вот приведенный выше результат после 4.1.2 и 4.2.2 - это то, что должно быть. PS А что с падением? Или там совсем мрачно?
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Nov 17 2008, 06:03
|

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

|
Цитата это вроде то что нужно Кстати, и к этому коду есть вопросы. IAR Код RSEG CODE:CODE:NOROOT(1) // 27 __x_z void cpy ( char* x , char* y , size_t s ) cpy: // 28 { MOV R19, R25 MOV R20, R24 // 29 if ( !s ) return; MOV R18, R16 OR R18, R17 BREQ ??cpy_0 // 30 size_t t = s; MOVW R25:R24, R17:R16 // 31 do // 32 { // 33 *(y++) = *(x++); ??cpy_1: LD R16, X+ ST Z+, R16 // 34 } // 35 while( --t ); SBIW R25:R24, 1 BRNE ??cpy_1 ??cpy_0: MOV R24, R20 MOV R25, R19 RET // 36 } И тут есть куда копать...
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Nov 21 2008, 07:12
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(ukpyr @ Nov 19 2008, 20:49)  вопрос к klen : на какую папку настроена ваша сборка avr-gcc ? при запуске avr-gcc выдает сообщение что не находит сс1. при добавлении пути к сс1 в %PATH% ругается что не находит какой-то библиотечный .o файл. в сборках WinAVR этого не было. это косяг, такого не должно быть. Как Вы его устанавливали? 1. распаковываете архив. 2. кладете содержимое в отдельную папку XXX . 3. прописываете путь к XXX\bin все, из этого положения работатьдолжно сразу. двигать папки содержимого и файлы нельзя.
|
|
|
|
|
Nov 21 2008, 09:28
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
так и сделал. не работает : Цитата cc1 -quiet -v -I. -Ilib -imultilib avr5 -iprefix e:\work\tools\prg\lng\c\gcc\avr\bin\../lib/gcc/avr/4.4.0/ -MD out\obj\skss_01.d -MF E:\work\projects\outcome\delta\skss_01\src\out\.dep\skss_01.o.d -MP -MQ out\obj\skss_01.o -DF_CPU=1000000UL -include skss_01.h skss_01.c -quiet -dumpbase skss_01.c -mmcu=atmega16 -auxbase-strip out\obj\skss_01.o -gdwarf-2 -Os -Wall -Wstrict-prototypes -Wundef -std=gnu99 -version -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunction-sections -o c:\windows\Temp/ccTaTY11.s avr-gcc: CreateProcess: No such file or directory WinAVR 4.1.1 из той же папки компилирует нормально. и еще бинарные файлы вашей сборки намного больше чем у WinAVR : avr/bin занимает 33М против 6М.
Сообщение отредактировал ukpyr - Nov 21 2008, 09:33
|
|
|
|
|
Nov 22 2008, 17:25
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
Цитата 1. какой архив используете. kgp_avr-bu2.19.50_20081005-gcc4.4.0_20081003-avrlibc1.6.2.7z с последним WinAVR то же самое, пока не могу понять в чем причина. Цитата по размеру. я собираю все библиотеи с отладочной информацией. вдруг понадобится. в прошивку всервно идет только целевой код просто собираю флешку портабельного софта для работы на выездах, приходится экономить объем.
|
|
|
|
|
Nov 24 2008, 08:25
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(ukpyr @ Nov 22 2008, 20:25)  kgp_avr-bu2.19.50_20081005-gcc4.4.0_20081003-avrlibc1.6.2.7z
с последним WinAVR то же самое, пока не могу понять в чем причина. просто собираю флешку портабельного софта для работы на выездах, приходится экономить объем. я себе такую тоже сделал. для этого сделал себе MinGW с динамической конфигурацией путей в момент загрузки консоли. в пакете всегда есть msys, и все тулсы для сборки проектов win32,AVR,ARM с эклипсом трудно - на машине в которую воткнуто флеш должна быть еще и ява машина. если хотите могу выложть - переделаете под себя.
|
|
|
|
|
  |
11 чел. читают эту тему (гостей: 11, скрытых пользователей: 0)
Пользователей: 0
|
|
|