|
Собрал свежий GCC, bu2.17 avr-gcc4.2.0-20061121 avr-libc-1.4.5 |
|
|
|
 |
Ответов
|
Dec 5 2006, 11:28
|

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

|
2_singlskv Кусочек С кода приведите который приводитк к такой генерации, я посмотрю че происходит, очень интересно. 2_SysRq  я сам решаю эту проблему так указанием путя с помощю опции -I для gcc или прописыванием PATH=$(PATH);aaa/bbb/cccc/rootdir/local/avr/include тогда начинает работать. А вы относительный путь сохранили от local/bin/avr-gcc до local/avr/include? Я как раз и работаю над тем чтоб небыло таких проблем при установке пакета в любое место.
|
|
|
|
|
Dec 5 2006, 11:49
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(klen @ Dec 5 2006, 11:28)  2_singlskv Кусочек С кода приведите который приводитк к такой генерации, я посмотрю че происходит, очень интересно. Код BYTE PIN_[2]={ (BYTE)(&PINB), (BYTE)(&PIND) };
tmp1= *(volatile BYTE *)((WORD)PIN_[0]); результат компиляции Код 160: tmp1= *(volatile BYTE *)((WORD)PIN_[0]); +0000020A: 91800100 LDS R24,0x0100 Load direct from data space +0000020C: 2FE8 MOV R30,R24 Copy register +0000020D: 27FF CLR R31 Clear Register +0000020E: 8180 LDD R24,Z+0 Load indirect with displacement
|
|
|
|
|
Dec 5 2006, 15:17
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(klen @ Dec 5 2006, 12:01)  Тупо всунул и закомпилял: Код uint8_t PIN_[2]={ (uint8_t)(&PINB), (uint8_t)(&PIND) };
volatile uint8_t tmp1= *(volatile uint8_t *)((uint16_t)PIN_[0]); 26: 83 b1 in r24, 0x03; 3 28: 89 83 std Y+1, r24; 0x01 А как он у Вас закомпелит вот такой код ? Код uint8_t PIN_[2]={ (uint8_t)(&PINB), (uint8_t)(&PIND) };
uint8_t tmp1= *(volatile uint8_t *)((uint16_t)PIN_[0]); PIN_[0]=(uint8_t)(&PIND); uint8_t tmp2= *(volatile uint8_t *)((uint16_t)PIN_[0]); PIN_[0]=(uint8_t)(&PING); uint8_t tmp3= *(volatile uint8_t *)((uint16_t)PIN_[0]);
|
|
|
|
|
Dec 5 2006, 23:45
|

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

|
код: Код //------------------------------------------------------------------- void x () __attribute__ ((naked)); void x () { volatile uint8_t PIN_[2]={ (uint8_t)(&PINB), (uint8_t)(&PIND) };
volatile uint8_t tmp1= *(volatile uint8_t *)((uint16_t)PIN_[0]); PIN_[0]=(uint8_t)(&PIND); volatile uint8_t tmp2= *(volatile uint8_t *)((uint16_t)PIN_[0]); PIN_[0]=(uint8_t)(&PINC); volatile uint8_t tmp3= *(volatile uint8_t *)((uint16_t)PIN_[0]); } листинг .lss Код //------------------------------------------------------------------- void x () __attribute__ ((naked)); void x () { 1c2: 83 e2 ldi r24, 0x23; 35 1c4: 8c 83 std Y+4, r24; 0x04 1c6: 99 e2 ldi r25, 0x29; 41 1c8: 9d 83 std Y+5, r25; 0x05 volatile uint8_t PIN_[2]={ (uint8_t)(&PINB), (uint8_t)(&PIND) };
volatile uint8_t tmp1= *(volatile uint8_t *)((uint16_t)PIN_[0]); 1ca: ec 81 ldd r30, Y+4; 0x04 1cc: ff 27 eor r31, r31 1ce: 80 81 ld r24, Z 1d0: 89 83 std Y+1, r24; 0x01 PIN_[0]=(uint8_t)(&PIND); 1d2: 9c 83 std Y+4, r25; 0x04 volatile uint8_t tmp2= *(volatile uint8_t *)((uint16_t)PIN_[0]); 1d4: ec 81 ldd r30, Y+4; 0x04 1d6: ff 27 eor r31, r31 1d8: 80 81 ld r24, Z 1da: 8a 83 std Y+2, r24; 0x02 PIN_[0]=(uint8_t)(&PINC); 1dc: 86 e2 ldi r24, 0x26; 38 1de: 8c 83 std Y+4, r24; 0x04 volatile uint8_t tmp3= *(volatile uint8_t *)((uint16_t)PIN_[0]); 1e0: ec 81 ldd r30, Y+4; 0x04 1e2: ff 27 eor r31, r31 1e4: 80 81 ld r24, Z 1e6: 8b 83 std Y+3, r24; 0x03 Какие выводы? К примеру mov уже не пресутствует  А это ваще правильный код, мне в данный момент некогда разглядывать его.
|
|
|
|
|
Dec 6 2006, 00:16
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(klen @ Dec 5 2006, 23:45)  код: Код //------------------------------------------------------------------- void x () __attribute__ ((naked)); void x () { volatile uint8_t PIN_[2]={ (uint8_t)(&PINB), (uint8_t)(&PIND) };
volatile uint8_t tmp1= *(volatile uint8_t *)((uint16_t)PIN_[0]); PIN_[0]=(uint8_t)(&PIND); volatile uint8_t tmp2= *(volatile uint8_t *)((uint16_t)PIN_[0]); PIN_[0]=(uint8_t)(&PINC); volatile uint8_t tmp3= *(volatile uint8_t *)((uint16_t)PIN_[0]); } листинг .lss Код //------------------------------------------------------------------- void x () __attribute__ ((naked)); void x () { 1c2: 83 e2 ldi r24, 0x23; 35 1c4: 8c 83 std Y+4, r24; 0x04 1c6: 99 e2 ldi r25, 0x29; 41 1c8: 9d 83 std Y+5, r25; 0x05 volatile uint8_t PIN_[2]={ (uint8_t)(&PINB), (uint8_t)(&PIND) };
volatile uint8_t tmp1= *(volatile uint8_t *)((uint16_t)PIN_[0]); 1ca: ec 81 ldd r30, Y+4; 0x04 1cc: ff 27 eor r31, r31 1ce: 80 81 ld r24, Z 1d0: 89 83 std Y+1, r24; 0x01 PIN_[0]=(uint8_t)(&PIND); 1d2: 9c 83 std Y+4, r25; 0x04 volatile uint8_t tmp2= *(volatile uint8_t *)((uint16_t)PIN_[0]); 1d4: ec 81 ldd r30, Y+4; 0x04 1d6: ff 27 eor r31, r31 1d8: 80 81 ld r24, Z 1da: 8a 83 std Y+2, r24; 0x02 PIN_[0]=(uint8_t)(&PINC); 1dc: 86 e2 ldi r24, 0x26; 38 1de: 8c 83 std Y+4, r24; 0x04 volatile uint8_t tmp3= *(volatile uint8_t *)((uint16_t)PIN_[0]); 1e0: ec 81 ldd r30, Y+4; 0x04 1e2: ff 27 eor r31, r31 1e4: 80 81 ld r24, Z 1e6: 8b 83 std Y+3, r24; 0x03 Какие выводы? К примеру mov уже не пресутствует  А это ваще правильный код, мне в данный момент некогда разглядывать его. А можно код полностью, и с опциями компилятору/ линкеру, тогда сравним/ проверим. и еще,тип процессора укажите, please
|
|
|
|
Сообщений в этой теме
klen Собрал свежий GCC Dec 4 2006, 18:16 singlskv Цитата(klen @ Dec 4 2006, 18:16) Собрал н... Dec 5 2006, 02:34 SysRq Есть 20060421 WinAVR (работает, компилирует, ошибо... Dec 5 2006, 08:17   singlskv Цитата(klen @ Dec 5 2006, 12:01) Тупо всу... Dec 5 2006, 12:14    klen Цитата(singlskv @ Dec 5 2006, 12:14) А ко... Dec 5 2006, 12:23       singlskv Вот код который я ему подсунул: (WinAVR 20060421 ... Dec 6 2006, 00:39        klen оптимизация -Os gcc4.2.0
Код#include <avr/io.h... Dec 6 2006, 01:15         singlskv Цитата(klen @ Dec 6 2006, 01:15) оптимиза... Dec 6 2006, 13:40 SysRq Цитата(klen @ Dec 5 2006, 11:28) 2_SysRq
... Dec 6 2006, 14:55
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|