Re: C: Arduino : Přesun pole bytů do proměnné unsigned long
Jan Waclawek
konfera na efton.sk
Středa Listopad 8 20:09:42 CET 2023
Ano, rovnako to prelozi nejake gcc 8.0 s -O2 aj s -Os (rozdiel je v tom
uplnom uvode, kde je inak prelozeny cyklus ktory "cita" byty z a do rx[i];
a potom su inak alokovane registre v poslednych 2 riadkoch)
Tiez ma to prekvapilo, ale je pravda ze ked sme s AVRkami robili, tak sme
dost vela kritickych miest prepisovali do asembleru.
wek
----- Original Message ---------------
>To je opravdu se zapnutou optimalizaci? Me spis vzdycky prekvapilo, kdyz
>jsem to jeste zkoumal, ze to prekladac pochopi a hezky nasoupe jen byty
>na spravna mista...
>
>Dne 08.11.2023 v 19:38 Jan Waclawek napsal(a):
>>> Spí± moµná SHIFTovat a ORovat.
>> b2 = rx[3] | (rx[4] << 8) | ((uint32_t)rx[5] << 16) | ((uint32_t)rx[6] <<
>> 24);
>> c = b2;
>>
>>
>> 39 0048 E091 0000 lds r30,rx+3
>> 40 004c C091 0000 lds r28,rx+4
>> 41 0050 D0E0 ldi r29,0
>> 42 0052 8091 0000 lds r24,rx+5
>> 43 0056 C82E mov r12,r24
>> 44 0058 D12C mov r13,__zero_reg__
>> 45 005a F12C mov r15,__zero_reg__
>> 46 005c E12C mov r14,__zero_reg__
>> 47 005e 4091 0000 lds r20,rx+6
>> 48 0062 50E0 ldi r21,0
>> 49 0064 70E0 ldi r23,0
>> 50 0066 60E0 ldi r22,0
>> 51 0068 0091 0000 lds r16,rx+3
>> 52 006c 1091 0000 lds r17,rx+3+1
>> 53 0070 012E mov __tmp_reg__,r17
>> 54 0072 000C lsl r0
>> 55 0074 220B sbc r18,r18
>> 56 0076 330B sbc r19,r19
>> 57 0078 D601 movw r26,r12
>> 58 007a 9927 clr r25
>> 59 007c 8827 clr r24
>> 60 007e 802B or r24,r16
>> 61 0080 912B or r25,r17
>> 62 0082 A22B or r26,r18
>> 63 0084 B32B or r27,r19
>> 64 0086 342F mov r19,r20
>> 65 0088 2227 clr r18
>> 66 008a 1127 clr r17
>> 67 008c 0027 clr r16
>> 68 008e 802B or r24,r16
>> 69 0090 912B or r25,r17
>> 70 0092 A22B or r26,r18
>> 71 0094 B32B or r27,r19
>> 72 0096 8093 0000 sts b2,r24
>> 73 009a 9093 0000 sts b2+1,r25
>> 74 009e A093 0000 sts b2+2,r26
>> 75 00a2 B093 0000 sts b2+3,r27
>> 76 00a6 8093 0000 sts c,r24
>> 77 00aa 9093 0000 sts c+1,r25
>> 78 00ae A093 0000 sts c+2,r26
>> 79 00b2 B093 0000 sts c+3,r27
>>
>> wek
Další informace o konferenci Hw-list