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