Code: Alles auswählen
51c: 91 4b 01 04 stw r10,260(r11)
520: a0 07 00 06 lhz r0,6(r7)
524: 54 00 d0 3e rotlwi r0,r0,26
528: 50 09 36 72 rlwimi r9,r0,6,25,25
52c: 91 0b 01 04 stw r8,260(r11)
Wenn ein vielfaches von 4 dauert lwz (32bit) lhz (16bit) und lbz (8bit) gleich lang = 1Clock (Vergleiche PPC Manual Table 8-1 + Kapitel 6.6.6 )
Keine Ahnung ob wir auf das allignment Einfluss haben (Kernel).
Das die beiden Assembler-Versionen gleich schnell sind liegt wohl daran das ein stw direkt hintereinander folgt (PPC Manual Table 8-1.):
Although a store (as well as mtspr for special registers external to the core) issued to the load/store unit buffer frees the core pipeline, the next load or store will not actually be performed on the bus until the bus is free.
Deshalb scheint das zusätzliche 'or' sozusagen zeitlich umsonst ausgefhrt werden.
Eventuell läßt sich also mit einem stb und lhb noch Zeit einsparen.
Ausserdem müße das rlwimi nach dem stw ausgefhrt werden. Vielleicht hat just_me ja noch einen genialen Einfall
Code: Alles auswählen
51c: 91 4b 01 04 stw r10,260(r11)
520: a0 07 00 06 lhz r0,6(r7)
524: 54 00 d0 3e rotlwi r0,r0,26
52c: 91 0b 01 04 stw r8,260(r11)
528: 50 09 36 72 rlwimi r9,r0,6,25,25
51c: 91 4b 01 04 stw r10,260(r11)
520: a0 07 00 06 lhz r0,6(r7)
524: 54 00 d0 3e rotlwi r0,r0,26
52c: 91 0b 01 04 stw r8,260(r11)
528: 50 09 36 72 rlwimi r9,r0,6,25,25
Also, da scheint doch noch was drin zu sein