Float na 8bit - minitest

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


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.
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240424/ad86482a/attachment-0001.htm>


Další informace o konferenci Hw-list