[elektro] C32 kérdés
Lajos Rancz
lajos.rancz at gmail.com
Wed Oct 31 13:27:29 CET 2012
Helló!
Akkor bugriportot a gyártónak!
Üdv
2012. október 31. 13:14 I F írta, <flaist at gmail.com>:
> 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]
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list