[elektro] C32 kérdés
I F
flaist at gmail.com
Wed Oct 31 13:14:54 CET 2012
Szia!
Jobban átolvastam. valóban a függvénynél is azt jelenti mint változónál.
Itt valami compiler zavar lehet, megnéztem a disassembly listát a két esetben.
A különbség, hogy a jó esetben elmenti az s0....s7 regisztereket
A hiba egyébként csak a 3-as sebesség optimalizálás bekapcsolásakor jön elő.
! **************************************************************************************/
!static void AntiAlias(int *x, int nBfly)
!{
! int k, a0, b0, c0, c1;
! const int *c;
! /* csa = Q31 */
! for (k = nBfly; k > 0; k--) {
0x9D009214: LW A0, 220(SP)
0x9D00921C: BLEZ A0, 0x9D009524
0x9D009220: ADDU S3, A3, V1
0x9D009224: LUI A2, -25343
0x9D00922C: ADDIU A2, A2, 15612
0x9D009230: ADDIU S2, A2, 4
0x9D009234: ADDIU S0, A2, 8
0x9D009238: ADDIU T7, A2, 12
0x9D00923C: ADDIU T6, A2, 16
0x9D009240: ADDIU T5, A2, 20
0x9D009244: ADDIU T4, A2, 24
0x9D009248: ADDIU T3, A2, 28
0x9D00924C: ADDIU T2, A2, 32
0x9D009250: ADDIU T1, A2, 36
0x9D009254: ADDIU T0, A2, 40
0x9D009258: ADDIU T8, A2, 44
0x9D00925C: ADDIU T9, A2, 48
0x9D009260: ADDIU S8, A2, 52
0x9D009264: ADDIU S7, A2, 60
0x9D009268: ADDU A1, A0, ZERO
0x9D009514: ADDIU A1, A1, -1
0x9D009518: BNE A1, ZERO, 0x9D009270
0x9D00951C: SW S4, 28(V0)
0x9D009520: MFLO A3
! c = csa[0];
! x += 18;
73: void AntiAlias(int *x, int nBfly)
74: {
9D0090A4 27BDFFE0 ADDIU SP, SP, -32
9D0090A8 AFB7001C SW S7, 28(SP)
9D0090AC AFB60018 SW S6, 24(SP)
9D0090B0 AFB50014 SW S5, 20(SP)
9D0090B4 AFB40010 SW S4, 16(SP)
9D0090B8 AFB3000C SW S3, 12(SP)
9D0090BC AFB20008 SW S2, 8(SP)
9D0090C0 AFB10004 SW S1, 4(SP)
75: int k, a0, b0, c0, c1;
76: const int *c;
77:
78: /* csa = Q31 */
79: for (k = nBfly; k > 0; k--) {
9D0090C4 18A000B5 BLEZ A1, 0x9D00939C
9D0090C8 AFB00000 SW S0, 0(SP)
9D0090CC 3C089D01 LUI T0, -25343
9D0090D0 25083CE8 ADDIU T0, T0, 15592
9D0090D4 25150004 ADDIU S5, T0, 4
9D0090D8 25140008 ADDIU S4, T0, 8
9D0090DC 2513000C ADDIU S3, T0, 12
9D0090E0 25120010 ADDIU S2, T0, 16
9D0090E4 25110014 ADDIU S1, T0, 20
9D0090E8 25100018 ADDIU S0, T0, 24
9D0090EC 2519001C ADDIU T9, T0, 28
9D0090F0 25180020 ADDIU T8, T0, 32
9D0090F4 250F0024 ADDIU T7, T0, 36
9D0090F8 250E0028 ADDIU T6, T0, 40
9D0090FC 250D002C ADDIU T5, T0, 44
9D009100 250C0030 ADDIU T4, T0, 48
9D009104 250B0034 ADDIU T3, T0, 52
9D009108 250A0038 ADDIU T2, T0, 56
9D00910C 2509003C ADDIU T1, T0, 60
9D009390 24A5FFFF ADDIU A1, A1, -1
9D009394 14A0FF5E BNE A1, ZERO, 0x9D009110
9D009398 AC82001C SW V0, 28(A0)
80: c = csa[0];
Lajos Rancz <lajos.rancz at gmail.com> írta (2012. október 31. 9:09):
> Helló!
>
> Tudsz adni linket, ezt hol olvastad? A static változóból kettő féle van:
>
> - ha függvényen kívül van dekralálva akkor csak a fordítási egységen
> belül látszik
> - ha függvénen belül, akkor olyan globális ami csak a függvényen belül
> látszik
>
> Egyéb csalafintaságról nem tudok :)
>
> Üdv
>
>
> 2012. október 31. 9:02 flaist írta, <flaist at gmail.com>:
>
>> Igen változó definiálás esetén konkrétan ezt jelenti.
>> De függvény definiáláskor számomra zavaros dolgokat írnak !
>>
>>
>> -----Original Message-----
>> From: elektro-bounces at tesla.hu [mailto:elektro-bounces at tesla.hu] On Behalf
>> Of Lajos Rancz
>> Sent: Wednesday, October 31, 2012 6:12 AM
>> To: elektro at tesla.hu
>> Subject: Re: [elektro] C32 kérdés
>>
>> Hello!
>>
>> Semmit igazából. Annyit ad meg, hogy a függvény csak abból a fordítási
>> egységből látszik, kívülről nem.
>> Lehet, hogy inline-ra csinálta emiatt, sutem compiler bug. Mi ez? Microchip
>> compiler?
>>
>> Üdv
>> 2012.10.31. 2:46, "flaist" <flaist at gmail.com> ezt írta:
>>
>> > Sziasztok!
>> >
>> >
>> >
>> > Ki tudja pontosan mit követ el a "static" bűvszó egy C32-es függvény
>> > deklarálásában.
>> >
>> >
>> >
>> > Azaz mi a különbség:
>> >
>> >
>> >
>> > Ha 3-s szintű tömörítés használok az MP3 helix projectben akkor:
>> >
>> >
>> >
>> > static void AntiAlias(int *x, int nBfly) //ezzel elszáll (ez az
>> eredeti)
>> >
>> >
>> >
>> > void AntiAlias(int *x, int nBfly) //ezzel nem
>> >
>> >
>> >
>> >
>> >
>> > A többi tömörítési szintnél nincs gond.
>> >
>> >
>> >
>> >
>> >
>> > Köszi, üdv István
>> >
>> > -----------------------------------------
>> > elektro[-flame|-etc]
>> >
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list