|
Я просто не верю что IAR STM8 такой тупой!, Ведь это же всегда был один из самых качественных компиляторов |
|
|
|
May 9 2017, 20:00
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
Код #pragma inline=forced static void inline f(uint8_t i) { while(--i) asm(""); }
int main() { f(10); } В результате: Код 183 int main() 184 { \ main: \ 000000 52 01 SUB SP, #0x1 186 f(10); \ 000002 35 0A .... MOV S:?b0, #0xa \ 000006 20 00 JRA L:??main_0 \ ??main_1: \ ??main_0: \ 000008 B6 .. LD A, S:?b0 \ 00000A 4A DEC A \ 00000B B7 .. LD S:?b0, A \ 00000D 26 F9 JRNE L:??main_1 ЗАЧЕМ? Зачем он делает всё это???? Настройки компилятора по полной программе: Multi-file compilation, High, Speed +No size constraints P.S. Cosmic же на много толковее справился, хотя я конечно по прежнему не понимаю почему нельзя просто с регистром A работать.... Зачем в стек то? Код 60 .text: section .text,new 61 0000 _main: 63 0000 88 push a 64 00000001 OFST: set 1 67 ; 10 f(12); 70 0001 a60c ld a,#12 71 0003 6b01 ld (OFST+0,sp),a 74 0005 L72: 75 ; 5 _asm(""); 79 ; 4 while(--i) 81 0005 0a01 dec (OFST+0,sp) 83 0007 26fc jrne L72 /////////////////////////////////////////////// 84 0009 L73: 86 0009 20fe jra L73 99 xdef _main 118 end
--------------------
The truth is out there...
|
|
|
|
|
 |
Ответов
|
May 15 2017, 14:15
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
Как раз эта часть отлично описана в посте со скринами Цитата Мой товарищ сделал задержку 1us вот таким не хитрым способом Код #define ONE_US_DELAY nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();no p();nop();nop()
Этот nop() есть ни что иное как макрос разворачивающийся в asm("nop") Макрос nop(), его конкретное определение можно найти в файле STM8S_StdPeriph_Lib\Libraries\STM8S_StdPeriph_Driver\inc\stm8s.h Код /*============================== Interrupts ====================================*/ #ifdef _RAISONANCE_ #include <intrins.h> #define enableInterrupts() _rim_() /* enable interrupts */ #define disableInterrupts() _sim_() /* disable interrupts */ #define rim() _rim_() /* enable interrupts */ #define sim() _sim_() /* disable interrupts */ #define nop() _nop_() /* No Operation */ #define trap() _trap_() /* Trap (soft IT) */ #define wfi() _wfi_() /* Wait For Interrupt */ #define halt() _halt_() /* Halt */ #elif defined(_COSMIC_) #define enableInterrupts() {_asm("rim\n");} /* enable interrupts */ #define disableInterrupts() {_asm("sim\n");} /* disable interrupts */ #define rim() {_asm("rim\n");} /* enable interrupts */ #define sim() {_asm("sim\n");} /* disable interrupts */ #define nop() {_asm("nop\n");} /* No Operation */ #define trap() {_asm("trap\n");} /* Trap (soft IT) */ #define wfi() {_asm("wfi\n");} /* Wait For Interrupt */ #define halt() {_asm("halt\n");} /* Halt */ #else /*_IAR_*/ #include <intrinsics.h> #define enableInterrupts() __enable_interrupt() /* enable interrupts */ #define disableInterrupts() __disable_interrupt() /* disable interrupts */ #define rim() __enable_interrupt() /* enable interrupts */ #define sim() __disable_interrupt() /* disable interrupts */ #define nop() __no_operation() /* No Operation */ #define trap() __trap() /* Trap (soft IT) */ #define wfi() __wait_for_interrupt() /* Wait For Interrupt */ #define halt() __halt() /* Halt */ #endif /*_RAISONANCE_*/ Ну и таки уже разобрались, что IAR уменьшил кол-во нопов ради размера и везде где встречается макрос он вставил два вызова этой своей авто сгенерированной функции с нопами. Времянка конечно же не совпала, но прикольно всё равно. Настройки проекта в IAR для повторения.
--------------------
The truth is out there...
|
|
|
|
Сообщений в этой теме
sigmaN Я просто не верю что IAR STM8 такой тупой! May 9 2017, 20:00 jcxz Цитата(sigmaN @ May 9 2017, 22:00) Cosmic... May 9 2017, 20:57 AHTOXA Посмотрите, что из вашего кода делает sdcc, и успо... May 10 2017, 06:51 Эдди Цитата(AHTOXA @ May 10 2017, 09:51) Посмо... May 11 2017, 11:52 sigmaN Грустно, потому что я в другом окне смотрю, что из... May 10 2017, 10:01 jcxz Цитата(sigmaN @ May 10 2017, 12:01) Груст... May 10 2017, 12:44 sigmaN Цели никакой нет и холливара тоже. Просто обидно ч... May 10 2017, 13:13 AHTOXA А как, по-вашему, должен выглядеть предложенный ва... May 10 2017, 18:21 jcxz Цитата(sigmaN @ May 10 2017, 15:13) Прост... May 10 2017, 20:01 sigmaN Выглядеть этот кусок может и должен в точности как... May 11 2017, 01:54 AHTOXA Цитата(sigmaN @ May 11 2017, 06:54) Выгля... May 11 2017, 06:20 jcxz Цитата(sigmaN @ May 11 2017, 03:54) Приде... May 11 2017, 08:38 sigmaN Тоже потом подумал про испорченный A. Однако же ни... May 11 2017, 08:34 sigmaN ЦитатаПриведите лучше пример реализации БИХ-фильтр... May 11 2017, 10:24 AHTOXA Цитата(sigmaN @ May 11 2017, 15:24) Удиви... May 11 2017, 14:00  Михась Цитата(AHTOXA @ May 11 2017, 20:00) Раз у... May 11 2017, 14:37   AHTOXA Цитата(Михась @ May 11 2017, 19:37)
Это ... May 11 2017, 17:05    Михась Цитата(AHTOXA @ May 12 2017, 00:05) Это н... May 12 2017, 03:40 sigmaN Cosmic для стм8 нынче абсолютно свободен и без огр... May 11 2017, 13:15 Эдди Космик только под мастдайку — не годится. May 11 2017, 13:24 sigmaN Странно, но космик в удобном виде размеры не вывод... May 12 2017, 10:44 sigmaN Мой товарищ сделал задержку 1us вот таким не хитры... May 13 2017, 17:35 jcxz Цитата(sigmaN @ May 13 2017, 19:35) Рассл... May 14 2017, 06:05  Den64 Цитата(jcxz @ May 14 2017, 09:05) Не поня... May 14 2017, 06:39   jcxz Цитата(Den64 @ May 14 2017, 08:39) Нескол... May 14 2017, 18:36    Den64 Цитата(jcxz @ May 14 2017, 21:36) Это пон... May 14 2017, 18:59 sigmaN ЦитатаЭто из игры fallout. Что это за приложение д... May 14 2017, 20:17 AHTOXA Мне фотки видны.
Он заменил 16 nop-ов на два вызов... May 14 2017, 21:16 jcxz Цитата(sigmaN @ May 14 2017, 22:17) Короч... May 15 2017, 09:38 sigmaN Да, я тоже перепроверил, времянка не соблюдена. Дл... May 14 2017, 21:27 Эдди Синус на STM8? Зачем???????????????? Jun 12 2017, 14:43 jcxz Цитата(Эдди @ Jun 12 2017, 16:43) Синус н... Jun 12 2017, 17:27 Эдди ШИМ — штука хорошая, но синусоида элементарно по т... Jun 13 2017, 05:25 jcxz Цитата(Эдди @ Jun 13 2017, 07:25) ШИМ ... Jun 13 2017, 06:26 jcxz Цитата(sigmaN @ May 9 2017, 23:00) ЗАЧЕМ?... Jul 25 2017, 11:44 sigmaN ммм, неплохо, неплохо! Затестим обязательно... Jul 26 2017, 19:26 VladislavS Пример из первого сообщения. STM8 Series 3.10.1
Ка... Jul 31 2017, 05:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|