[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