Re: C: Arduino : Přesun pole bytů do proměnné unsigned long
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Středa Listopad 8 19:56:40 CET 2023
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
>
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list