Float na 8bit - minitest

Pavel Hudeček edizon na seznam.cz
Středa Duben 24 01:10:08 CEST 2024


Ještě jsem přidal inicializaci hodin na 24 MHz.

PORTC.OUTTGL = 255;
PORTC.OUTTGL = 255;
PORTC.OUTTGL = 255;
PORTC.OUTTGL = 255;
PORTC.OUTTGL = 255;
PORTC.OUTTGL = 255;

Dělá dle očekávání 12 MHz.

A tady původní program bez a s různými výpočty:

//-------------    // CLK 24 MHz - C3 461,6 kHz
//*x = *a / *b;    // CLK 24 MHz - C3 41,6 kHz
//*x = *a * *b;    // CLK 24 MHz - C3 99 kHz
//*x = *a + *b;    // CLK 24 MHz - C3 128,3 kHz
//*x = *a - *b;    // CLK 24 MHz - C3 127,6 kHz
//*x = *a * 0.99 - *b;    // CLK 24 MHz - C3 76,6 kHz
//*x = *a * 1.01 - *b;    // CLK 24 MHz - C3 72,5 kHz
//*x = log(*a * 1.01 - *b);    // CLK 24 MHz - C3 9 kHz
//*x = log(*a * 1.01 / *b);    // CLK 24 MHz - C3 8,2 kHz
*x = sin(*a * 1.01 / *b);    // CLK 24 MHz - C3 9,5 kHz

Frekvence na C3 jsou nejnižší, u dělení a logaritmu byl při hmatání na 
porty rozptyl asi 1:2 a při asi chybné hodnotě razantní zryhclení, třeba 
z 9 na 75 kHz.

Poslední build se sinem:
Program Memory Usage     :    1618 bytes   2,5 % Full
Data Memory Usage         :    18 bytes   0,2 % Full

Log * o ~100B kratší.
Log / o ~100B delší.

Varianta *x = *a * 0.99 - *b;
Program Memory Usage     :    1082 bytes   1,7 % Full
Data Memory Usage         :    18 bytes   0,2 % Full

Varianta *x = *a * 1.01 - *b;
Stejná délka, ale pomalejší

Ty poslední 2 odpovídaj mému nejčastějšímu typu výpočtu:
ADC * cal1 + cal2

PH

Dne 24.04.2024 v 0:10 Pavel Hudeček napsal(a):
> Tak jsem to zkusil:
>
> 1. Porty A a D přijmou 4B float hodnot a, b
> 2. Nahodí port C na 255
> 3. Spočítá x = a/b
> 4. Shodí port C na poslední idx
> 5. Pošle 4B float hodnoty x na port F
>
> Před příjmem a vysíláním posílá idx na port C
>
> (nebude fungovat úplně dobře, port F nemá všechny bity použitelné pro 
> výstup a port D nemá nohu 0)
>
> ---------------
> #include <avr/io.h> // AVR64DD32
>
> uint8_t    arrB[12];
> float    *a = (float*)&arrB[0];
> float    *b = (float*)&arrB[4];
> float    *x = (float*)&arrB[8];
> uint8_t    idx;
>
> int main(void) {
>
>     PORTC.DIR = 255;
>     PORTF.DIR = 255;
>
>     while (1) {
>         idx=0;
>
>         PORTC.OUT = idx;
>         arrB[idx]=PORTA.IN; arrB[idx+4]=PORTD.IN; idx++;
>         PORTC.OUT = idx;
>         arrB[idx]=PORTA.IN; arrB[idx+4]=PORTD.IN; idx++;
>         PORTC.OUT = idx;
>         arrB[idx]=PORTA.IN; arrB[idx+4]=PORTD.IN; idx++;
>         PORTC.OUT = idx;
>         arrB[idx]=PORTA.IN; arrB[idx+4]=PORTD.IN; idx++;
>
>         PORTC.OUT = 255;
>         *x = *a / *b;
>
>         PORTC.OUT = idx;
>         PORTF.OUT = arrB[idx+4]; idx++;
>         PORTC.OUT = idx;
>         PORTF.OUT = arrB[idx+4]; idx++;
>         PORTC.OUT = idx;
>         PORTF.OUT = arrB[idx+4]; idx++;
>         PORTC.OUT = idx;
>         PORTF.OUT = arrB[idx+4]; idx++;
>     }
> }
> ----------------
> Program Memory Usage     :    836 bytes   1,3 % Full
> Data Memory Usage         :    18 bytes   0,2 % Full
> -------------------
> Hodiny jsou takhle nejspíš 24/6 = 4 MHz.
> Porty ve vzduchu.
>
> Na C3 je asi 20µs stav 0 a  pak něco přes 125µs 0.
> (vyšší bity nejsou vyvedeny)
> Osciloskop hlásí 7,11 kHz.
>
> Na C0 synchronně s C3 objeví 0, pak jsou celkem 3 pulzy, poslední 
> vzestupná asi 4µs před C0.
> První 010 trvá malinko přes 5µs, zbytek je delší a všechny trochu plavou.
>
> Hmatání na vstupní porty nemá na C0 a C3 vliv, ale způsobuje 
> poblikávání LEDky na F5.
> ...
> Aha tak má vliv, po hmatání je 6,92 kHz:-)
>
> A takhle dopad LSS fajl:
> --------------------
> mini-float-test-avr64dd32.elf:     file format elf32-avr
>
> Sections:
> Idx Name          Size      VMA       LMA       File off  Algn
>   0 .data         00000006  00806000  0000033e  000003d2  2**0
>                   CONTENTS, ALLOC, LOAD, DATA
>   1 .text         0000033e  00000000  00000000  00000094  2**1
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>   2 .bss          0000000c  00806006  00806006  000003d8  2**0
>                   ALLOC
>   3 .comment      00000030  00000000  00000000  000003d8  2**0
>                   CONTENTS, READONLY
>   4 .note.gnu.avr.deviceinfo 0000003c  00000000  00000000 00000408  2**2
>                   CONTENTS, READONLY
>   5 .debug_info   00001fac  00000000  00000000  00000444  2**0
>                   CONTENTS, READONLY, DEBUGGING
>   6 .debug_abbrev 00001dfe  00000000  00000000  000023f0  2**0
>                   CONTENTS, READONLY, DEBUGGING
>   7 .debug_line   0000016f  00000000  00000000  000041ee  2**0
>                   CONTENTS, READONLY, DEBUGGING
>   8 .debug_str    00000dee  00000000  00000000  0000435d  2**0
>                   CONTENTS, READONLY, DEBUGGING
>
> Disassembly of section .text:
>
> 00000000 <__vectors>:
>    0:    0c 94 48 00     jmp    0x90    ; 0x90 <__ctors_end>
>    4:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>    8:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>    c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   10:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   14:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   18:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   1c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   20:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   24:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   28:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   2c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   30:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   34:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   38:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   3c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   40:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   44:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   48:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   4c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   50:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   54:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   58:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   5c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   60:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   64:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   68:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   6c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   70:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   74:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   78:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   7c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   80:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   84:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   88:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>   8c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
>
> 00000090 <__ctors_end>:
>   90:    11 24           eor    r1, r1
>   92:    1f be           out    0x3f, r1    ; 63
>   94:    cf ef           ldi    r28, 0xFF    ; 255
>   96:    cd bf           out    0x3d, r28    ; 61
>   98:    df e7           ldi    r29, 0x7F    ; 127
>   9a:    de bf           out    0x3e, r29    ; 62
>
> 0000009c <__do_copy_data>:
>   9c:    10 e6           ldi    r17, 0x60    ; 96
>   9e:    a0 e0           ldi    r26, 0x00    ; 0
>   a0:    b0 e6           ldi    r27, 0x60    ; 96
>   a2:    ee e3           ldi    r30, 0x3E    ; 62
>   a4:    f3 e0           ldi    r31, 0x03    ; 3
>   a6:    02 c0           rjmp    .+4          ; 0xac <__do_copy_data+0x10>
>   a8:    05 90           lpm    r0, Z+
>   aa:    0d 92           st    X+, r0
>   ac:    a6 30           cpi    r26, 0x06    ; 6
>   ae:    b1 07           cpc    r27, r17
>   b0:    d9 f7           brne    .-10         ; 0xa8 <__do_copy_data+0xc>
>
> 000000b2 <__do_clear_bss>:
>   b2:    20 e6           ldi    r18, 0x60    ; 96
>   b4:    a6 e0           ldi    r26, 0x06    ; 6
>   b6:    b0 e6           ldi    r27, 0x60    ; 96
>   b8:    01 c0           rjmp    .+2          ; 0xbc <.do_clear_bss_start>
>
> 000000ba <.do_clear_bss_loop>:
>   ba:    1d 92           st    X+, r1
>
> 000000bc <.do_clear_bss_start>:
>   bc:    a2 31           cpi    r26, 0x12    ; 18
>   be:    b2 07           cpc    r27, r18
>   c0:    e1 f7           brne    .-8          ; 0xba <.do_clear_bss_loop>
>   c2:    0e 94 67 00     call    0xce    ; 0xce <main>
>   c6:    0c 94 9d 01     jmp    0x33a    ; 0x33a <_exit>
>
> 000000ca <__bad_interrupt>:
>   ca:    0c 94 00 00     jmp    0    ; 0x0 <__vectors>
>
> 000000ce <main>:
>   ce:    8f ef           ldi    r24, 0xFF    ; 255
>   d0:    80 93 40 04     sts    0x0440, r24    ; 0x800440 
> <__TEXT_REGION_LENGTH__+0x7f0440>
>   d4:    80 93 a0 04     sts    0x04A0, r24    ; 0x8004a0 
> <__TEXT_REGION_LENGTH__+0x7f04a0>
>   d8:    00 91 00 60     lds    r16, 0x6000    ; 0x806000 
> <__DATA_REGION_ORIGIN__>
>   dc:    10 91 01 60     lds    r17, 0x6001    ; 0x806001 
> <__DATA_REGION_ORIGIN__+0x1>
>   e0:    e0 90 04 60     lds    r14, 0x6004    ; 0x806004 <a>
>   e4:    f0 90 05 60     lds    r15, 0x6005    ; 0x806005 <a+0x1>
>   e8:    c0 90 02 60     lds    r12, 0x6002    ; 0x806002 <b>
>   ec:    d0 90 03 60     lds    r13, 0x6003    ; 0x806003 <b+0x1>
>   f0:    66 24           eor    r6, r6
>   f2:    63 94           inc    r6
>   f4:    82 e0           ldi    r24, 0x02    ; 2
>   f6:    78 2e           mov    r7, r24
>   f8:    93 e0           ldi    r25, 0x03    ; 3
>   fa:    89 2e           mov    r8, r25
>   fc:    99 24           eor    r9, r9
>   fe:    9a 94           dec    r9
>  100:    24 e0           ldi    r18, 0x04    ; 4
>  102:    a2 2e           mov    r10, r18
>  104:    35 e0           ldi    r19, 0x05    ; 5
>  106:    b3 2e           mov    r11, r19
>  108:    d6 e0           ldi    r29, 0x06    ; 6
>  10a:    c7 e0           ldi    r28, 0x07    ; 7
>  10c:    10 92 44 04     sts    0x0444, r1    ; 0x800444 
> <__TEXT_REGION_LENGTH__+0x7f0444>
>  110:    80 91 08 04     lds    r24, 0x0408    ; 0x800408 
> <__TEXT_REGION_LENGTH__+0x7f0408>
>  114:    80 93 06 60     sts    0x6006, r24    ; 0x806006 <__data_end>
>  118:    80 91 68 04     lds    r24, 0x0468    ; 0x800468 
> <__TEXT_REGION_LENGTH__+0x7f0468>
>  11c:    80 93 0a 60     sts    0x600A, r24    ; 0x80600a <__data_end+0x4>
>  120:    60 92 44 04     sts    0x0444, r6    ; 0x800444 
> <__TEXT_REGION_LENGTH__+0x7f0444>
>  124:    80 91 08 04     lds    r24, 0x0408    ; 0x800408 
> <__TEXT_REGION_LENGTH__+0x7f0408>
>  128:    80 93 07 60     sts    0x6007, r24    ; 0x806007 <__data_end+0x1>
>  12c:    80 91 68 04     lds    r24, 0x0468    ; 0x800468 
> <__TEXT_REGION_LENGTH__+0x7f0468>
>  130:    80 93 0b 60     sts    0x600B, r24    ; 0x80600b <__data_end+0x5>
>  134:    70 92 44 04     sts    0x0444, r7    ; 0x800444 
> <__TEXT_REGION_LENGTH__+0x7f0444>
>  138:    80 91 08 04     lds    r24, 0x0408    ; 0x800408 
> <__TEXT_REGION_LENGTH__+0x7f0408>
>  13c:    80 93 08 60     sts    0x6008, r24    ; 0x806008 <__data_end+0x2>
>  140:    80 91 68 04     lds    r24, 0x0468    ; 0x800468 
> <__TEXT_REGION_LENGTH__+0x7f0468>
>  144:    80 93 0c 60     sts    0x600C, r24    ; 0x80600c <__data_end+0x6>
>  148:    80 92 44 04     sts    0x0444, r8    ; 0x800444 
> <__TEXT_REGION_LENGTH__+0x7f0444>
>  14c:    80 91 08 04     lds    r24, 0x0408    ; 0x800408 
> <__TEXT_REGION_LENGTH__+0x7f0408>
>  150:    80 93 09 60     sts    0x6009, r24    ; 0x806009 <__data_end+0x3>
>  154:    80 91 68 04     lds    r24, 0x0468    ; 0x800468 
> <__TEXT_REGION_LENGTH__+0x7f0468>
>  158:    80 93 0d 60     sts    0x600D, r24    ; 0x80600d <__data_end+0x7>
>  15c:    90 92 44 04     sts    0x0444, r9    ; 0x800444 
> <__TEXT_REGION_LENGTH__+0x7f0444>
>  160:    f6 01           movw    r30, r12
>  162:    20 81           ld    r18, Z
>  164:    31 81           ldd    r19, Z+1    ; 0x01
>  166:    42 81           ldd    r20, Z+2    ; 0x02
>  168:    53 81           ldd    r21, Z+3    ; 0x03
>  16a:    f7 01           movw    r30, r14
>  16c:    60 81           ld    r22, Z
>  16e:    71 81           ldd    r23, Z+1    ; 0x01
>  170:    82 81           ldd    r24, Z+2    ; 0x02
>  172:    93 81           ldd    r25, Z+3    ; 0x03
>  174:    0e 94 da 00     call    0x1b4    ; 0x1b4 <__divsf3>
>  178:    f8 01           movw    r30, r16
>  17a:    60 83           st    Z, r22
>  17c:    71 83           std    Z+1, r23    ; 0x01
>  17e:    82 83           std    Z+2, r24    ; 0x02
>  180:    93 83           std    Z+3, r25    ; 0x03
>  182:    a0 92 44 04     sts    0x0444, r10    ; 0x800444 
> <__TEXT_REGION_LENGTH__+0x7f0444>
>  186:    80 91 0e 60     lds    r24, 0x600E    ; 0x80600e <__data_end+0x8>
>  18a:    80 93 a4 04     sts    0x04A4, r24    ; 0x8004a4 
> <__TEXT_REGION_LENGTH__+0x7f04a4>
>  18e:    b0 92 44 04     sts    0x0444, r11    ; 0x800444 
> <__TEXT_REGION_LENGTH__+0x7f0444>
>  192:    80 91 0f 60     lds    r24, 0x600F    ; 0x80600f <__data_end+0x9>
>  196:    80 93 a4 04     sts    0x04A4, r24    ; 0x8004a4 
> <__TEXT_REGION_LENGTH__+0x7f04a4>
>  19a:    d0 93 44 04     sts    0x0444, r29    ; 0x800444 
> <__TEXT_REGION_LENGTH__+0x7f0444>
>  19e:    80 91 10 60     lds    r24, 0x6010    ; 0x806010 <__data_end+0xa>
>  1a2:    80 93 a4 04     sts    0x04A4, r24    ; 0x8004a4 
> <__TEXT_REGION_LENGTH__+0x7f04a4>
>  1a6:    c0 93 44 04     sts    0x0444, r28    ; 0x800444 
> <__TEXT_REGION_LENGTH__+0x7f0444>
>  1aa:    80 91 11 60     lds    r24, 0x6011    ; 0x806011 <__data_end+0xb>
>  1ae:    80 93 a4 04     sts    0x04A4, r24    ; 0x8004a4 
> <__TEXT_REGION_LENGTH__+0x7f04a4>
>  1b2:    ac cf           rjmp    .-168        ; 0x10c 
> <__EEPROM_REGION_LENGTH__+0xc>
>
> 000001b4 <__divsf3>:
>  1b4:    0e 94 ee 00     call    0x1dc    ; 0x1dc <__divsf3x>
>  1b8:    0c 94 63 01     jmp    0x2c6    ; 0x2c6 <__fp_round>
>  1bc:    0e 94 5c 01     call    0x2b8    ; 0x2b8 <__fp_pscB>
>  1c0:    58 f0           brcs    .+22         ; 0x1d8 <__divsf3+0x24>
>  1c2:    0e 94 55 01     call    0x2aa    ; 0x2aa <__fp_pscA>
>  1c6:    40 f0           brcs    .+16         ; 0x1d8 <__divsf3+0x24>
>  1c8:    29 f4           brne    .+10         ; 0x1d4 <__divsf3+0x20>
>  1ca:    5f 3f           cpi    r21, 0xFF    ; 255
>  1cc:    29 f0           breq    .+10         ; 0x1d8 <__divsf3+0x24>
>  1ce:    0c 94 4c 01     jmp    0x298    ; 0x298 <__fp_inf>
>  1d2:    51 11           cpse    r21, r1
>  1d4:    0c 94 97 01     jmp    0x32e    ; 0x32e <__fp_szero>
>  1d8:    0c 94 52 01     jmp    0x2a4    ; 0x2a4 <__fp_nan>
>
> 000001dc <__divsf3x>:
>  1dc:    0e 94 74 01     call    0x2e8    ; 0x2e8 <__fp_split3>
>  1e0:    68 f3           brcs    .-38         ; 0x1bc <__divsf3+0x8>
>
> 000001e2 <__divsf3_pse>:
>  1e2:    99 23           and    r25, r25
>  1e4:    b1 f3           breq    .-20         ; 0x1d2 <__divsf3+0x1e>
>  1e6:    55 23           and    r21, r21
>  1e8:    91 f3           breq    .-28         ; 0x1ce <__divsf3+0x1a>
>  1ea:    95 1b           sub    r25, r21
>  1ec:    55 0b           sbc    r21, r21
>  1ee:    bb 27           eor    r27, r27
>  1f0:    aa 27           eor    r26, r26
>  1f2:    62 17           cp    r22, r18
>  1f4:    73 07           cpc    r23, r19
>  1f6:    84 07           cpc    r24, r20
>  1f8:    38 f0           brcs    .+14         ; 0x208 <__divsf3_pse+0x26>
>  1fa:    9f 5f           subi    r25, 0xFF    ; 255
>  1fc:    5f 4f           sbci    r21, 0xFF    ; 255
>  1fe:    22 0f           add    r18, r18
>  200:    33 1f           adc    r19, r19
>  202:    44 1f           adc    r20, r20
>  204:    aa 1f           adc    r26, r26
>  206:    a9 f3           breq    .-22         ; 0x1f2 <__divsf3_pse+0x10>
>  208:    35 d0           rcall    .+106        ; 0x274 <__divsf3_pse+0x92>
>  20a:    0e 2e           mov    r0, r30
>  20c:    3a f0           brmi    .+14         ; 0x21c <__divsf3_pse+0x3a>
>  20e:    e0 e8           ldi    r30, 0x80    ; 128
>  210:    32 d0           rcall    .+100        ; 0x276 <__divsf3_pse+0x94>
>  212:    91 50           subi    r25, 0x01    ; 1
>  214:    50 40           sbci    r21, 0x00    ; 0
>  216:    e6 95           lsr    r30
>  218:    00 1c           adc    r0, r0
>  21a:    ca f7           brpl    .-14         ; 0x20e <__divsf3_pse+0x2c>
>  21c:    2b d0           rcall    .+86         ; 0x274 <__divsf3_pse+0x92>
>  21e:    fe 2f           mov    r31, r30
>  220:    29 d0           rcall    .+82         ; 0x274 <__divsf3_pse+0x92>
>  222:    66 0f           add    r22, r22
>  224:    77 1f           adc    r23, r23
>  226:    88 1f           adc    r24, r24
>  228:    bb 1f           adc    r27, r27
>  22a:    26 17           cp    r18, r22
>  22c:    37 07           cpc    r19, r23
>  22e:    48 07           cpc    r20, r24
>  230:    ab 07           cpc    r26, r27
>  232:    b0 e8           ldi    r27, 0x80    ; 128
>  234:    09 f0           breq    .+2          ; 0x238 <__divsf3_pse+0x56>
>  236:    bb 0b           sbc    r27, r27
>  238:    80 2d           mov    r24, r0
>  23a:    bf 01           movw    r22, r30
>  23c:    ff 27           eor    r31, r31
>  23e:    93 58           subi    r25, 0x83    ; 131
>  240:    5f 4f           sbci    r21, 0xFF    ; 255
>  242:    3a f0           brmi    .+14         ; 0x252 <__divsf3_pse+0x70>
>  244:    9e 3f           cpi    r25, 0xFE    ; 254
>  246:    51 05           cpc    r21, r1
>  248:    78 f0           brcs    .+30         ; 0x268 <__divsf3_pse+0x86>
>  24a:    0c 94 4c 01     jmp    0x298    ; 0x298 <__fp_inf>
>  24e:    0c 94 97 01     jmp    0x32e    ; 0x32e <__fp_szero>
>  252:    5f 3f           cpi    r21, 0xFF    ; 255
>  254:    e4 f3           brlt    .-8          ; 0x24e <__divsf3_pse+0x6c>
>  256:    98 3e           cpi    r25, 0xE8    ; 232
>  258:    d4 f3           brlt    .-12         ; 0x24e <__divsf3_pse+0x6c>
>  25a:    86 95           lsr    r24
>  25c:    77 95           ror    r23
>  25e:    67 95           ror    r22
>  260:    b7 95           ror    r27
>  262:    f7 95           ror    r31
>  264:    9f 5f           subi    r25, 0xFF    ; 255
>  266:    c9 f7           brne    .-14         ; 0x25a <__divsf3_pse+0x78>
>  268:    88 0f           add    r24, r24
>  26a:    91 1d           adc    r25, r1
>  26c:    96 95           lsr    r25
>  26e:    87 95           ror    r24
>  270:    97 f9           bld    r25, 7
>  272:    08 95           ret
>  274:    e1 e0           ldi    r30, 0x01    ; 1
>  276:    66 0f           add    r22, r22
>  278:    77 1f           adc    r23, r23
>  27a:    88 1f           adc    r24, r24
>  27c:    bb 1f           adc    r27, r27
>  27e:    62 17           cp    r22, r18
>  280:    73 07           cpc    r23, r19
>  282:    84 07           cpc    r24, r20
>  284:    ba 07           cpc    r27, r26
>  286:    20 f0           brcs    .+8          ; 0x290 <__divsf3_pse+0xae>
>  288:    62 1b           sub    r22, r18
>  28a:    73 0b           sbc    r23, r19
>  28c:    84 0b           sbc    r24, r20
>  28e:    ba 0b           sbc    r27, r26
>  290:    ee 1f           adc    r30, r30
>  292:    88 f7           brcc    .-30         ; 0x276 <__divsf3_pse+0x94>
>  294:    e0 95           com    r30
>  296:    08 95           ret
>
> 00000298 <__fp_inf>:
>  298:    97 f9           bld    r25, 7
>  29a:    9f 67           ori    r25, 0x7F    ; 127
>  29c:    80 e8           ldi    r24, 0x80    ; 128
>  29e:    70 e0           ldi    r23, 0x00    ; 0
>  2a0:    60 e0           ldi    r22, 0x00    ; 0
>  2a2:    08 95           ret
>
> 000002a4 <__fp_nan>:
>  2a4:    9f ef           ldi    r25, 0xFF    ; 255
>  2a6:    80 ec           ldi    r24, 0xC0    ; 192
>  2a8:    08 95           ret
>
> 000002aa <__fp_pscA>:
>  2aa:    00 24           eor    r0, r0
>  2ac:    0a 94           dec    r0
>  2ae:    16 16           cp    r1, r22
>  2b0:    17 06           cpc    r1, r23
>  2b2:    18 06           cpc    r1, r24
>  2b4:    09 06           cpc    r0, r25
>  2b6:    08 95           ret
>
> 000002b8 <__fp_pscB>:
>  2b8:    00 24           eor    r0, r0
>  2ba:    0a 94           dec    r0
>  2bc:    12 16           cp    r1, r18
>  2be:    13 06           cpc    r1, r19
>  2c0:    14 06           cpc    r1, r20
>  2c2:    05 06           cpc    r0, r21
>  2c4:    08 95           ret
>
> 000002c6 <__fp_round>:
>  2c6:    09 2e           mov    r0, r25
>  2c8:    03 94           inc    r0
>  2ca:    00 0c           add    r0, r0
>  2cc:    11 f4           brne    .+4          ; 0x2d2 <__fp_round+0xc>
>  2ce:    88 23           and    r24, r24
>  2d0:    52 f0           brmi    .+20         ; 0x2e6 <__fp_round+0x20>
>  2d2:    bb 0f           add    r27, r27
>  2d4:    40 f4           brcc    .+16         ; 0x2e6 <__fp_round+0x20>
>  2d6:    bf 2b           or    r27, r31
>  2d8:    11 f4           brne    .+4          ; 0x2de <__fp_round+0x18>
>  2da:    60 ff           sbrs    r22, 0
>  2dc:    04 c0           rjmp    .+8          ; 0x2e6 <__fp_round+0x20>
>  2de:    6f 5f           subi    r22, 0xFF    ; 255
>  2e0:    7f 4f           sbci    r23, 0xFF    ; 255
>  2e2:    8f 4f           sbci    r24, 0xFF    ; 255
>  2e4:    9f 4f           sbci    r25, 0xFF    ; 255
>  2e6:    08 95           ret
>
> 000002e8 <__fp_split3>:
>  2e8:    57 fd           sbrc    r21, 7
>  2ea:    90 58           subi    r25, 0x80    ; 128
>  2ec:    44 0f           add    r20, r20
>  2ee:    55 1f           adc    r21, r21
>  2f0:    59 f0           breq    .+22         ; 0x308 <__fp_splitA+0x10>
>  2f2:    5f 3f           cpi    r21, 0xFF    ; 255
>  2f4:    71 f0           breq    .+28         ; 0x312 <__fp_splitA+0x1a>
>  2f6:    47 95           ror    r20
>
> 000002f8 <__fp_splitA>:
>  2f8:    88 0f           add    r24, r24
>  2fa:    97 fb           bst    r25, 7
>  2fc:    99 1f           adc    r25, r25
>  2fe:    61 f0           breq    .+24         ; 0x318 <__fp_splitA+0x20>
>  300:    9f 3f           cpi    r25, 0xFF    ; 255
>  302:    79 f0           breq    .+30         ; 0x322 <__fp_splitA+0x2a>
>  304:    87 95           ror    r24
>  306:    08 95           ret
>  308:    12 16           cp    r1, r18
>  30a:    13 06           cpc    r1, r19
>  30c:    14 06           cpc    r1, r20
>  30e:    55 1f           adc    r21, r21
>  310:    f2 cf           rjmp    .-28         ; 0x2f6 <__fp_split3+0xe>
>  312:    46 95           lsr    r20
>  314:    f1 df           rcall    .-30         ; 0x2f8 <__fp_splitA>
>  316:    08 c0           rjmp    .+16         ; 0x328 <__fp_splitA+0x30>
>  318:    16 16           cp    r1, r22
>  31a:    17 06           cpc    r1, r23
>  31c:    18 06           cpc    r1, r24
>  31e:    99 1f           adc    r25, r25
>  320:    f1 cf           rjmp    .-30         ; 0x304 <__fp_splitA+0xc>
>  322:    86 95           lsr    r24
>  324:    71 05           cpc    r23, r1
>  326:    61 05           cpc    r22, r1
>  328:    08 94           sec
>  32a:    08 95           ret
>
> 0000032c <__fp_zero>:
>  32c:    e8 94           clt
>
> 0000032e <__fp_szero>:
>  32e:    bb 27           eor    r27, r27
>  330:    66 27           eor    r22, r22
>  332:    77 27           eor    r23, r23
>  334:    cb 01           movw    r24, r22
>  336:    97 f9           bld    r25, 7
>  338:    08 95           ret
>
> 0000033a <_exit>:
>  33a:    f8 94           cli
>
> 0000033c <__stop_program>:
>  33c:    ff cf           rjmp    .-2          ; 0x33c <__stop_program>
> -----------------------
>
> PH
>
> Dne 23.04.2024 v 18:23 Martin Záruba napsal(a):
>> Spíš myslím, že podstatné je umět si představit, jak i jednoduchý kód 
>> v C vytvoří mnoho strojových instrukcí. Skoro si netroufám představit 
>> si, co je výsledkem, pokud bych použil float.
>
> _______________________________________________
> HW-list mailing list  -  sponsored bywww.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240424/047b2622/attachment.htm>


Další informace o konferenci Hw-list