Forum: Compiler & IDEs Atmel Studio 7 Warnmeldungen


von Rolf D. (rolfdegen)


Angehängte Dateien:

Lesenswert?

Hallo zusammen und einen schönen guten Morgen :)

Ich bin dabei meinen Projektcode in Atmel Studio etwas zu entmüllen und 
bekomme über 200 gleiche Warnnungen angezeigt ups...

Warnungen: "output constraint '=' for operand 0 is not at the beginning"

Vermutlich liegts an den verwendeten asm inline Funktionen in der op.h 
Datei.

Hier ein Beispiel:

oscillator.c
1
....
2
3
//interpolation sample
4
      sample1 = hugemem_read8(p + addr);
5
      sample2 = hugemem_read8(p + addr + 1);
6
      uint8_t phase_x = (phase >> 8) & 0xff;
7
      sample = U8MixShift8(sample1,sample2, phase_x);
8
...

op.h
1
static inline uint8_t U8MixShift8(uint8_t a, uint8_t b, uint8_t balance) {
2
  uint16_t sum;
3
  asm(
4
  "mul %3, %2"      "\n\t"  // b * balance
5
  "movw %A0, r0"    "\n\t"  // to sum
6
  "com %2"          "\n\t"  // 255 - balance
7
  "mul %1, %2"      "\n\t"  // a * (255 - balance)
8
  "com %2"          "\n\t"  // reset balance to its previous value
9
  "add %A0, r0"     "\n\t"  // add to sum L
10
  "adc %B0, r1"     "\n\t"  // add to sum H
11
  "eor r1, r1"      "\n\t"  // reset r1 after multiplication
12
  : "&=r" (sum)
13
  : "a" (a), "a" (balance), "a" (b)
14
  );
15
  return sum >> 8;
16
}

Ich hab das ganze Atmel Studio7 Projekt File mal als zip im Anhang 
hochgeladen. Der Code ist frei.

Wer mehr über das Projekt wissen will schaut bitte hier: 
Beitrag "AVR Synthesizer mit ATxmega128A1"

Im Voraus schon mal vielen Danke für eure Hilfe. Lieben Gruß Rolf aus 
Wuppertal :)

: Verschoben durch Moderator
von Markus F. (mfro)


Lesenswert?

Rolf D. schrieb:
> : "&=r" (sum)

Das gcc-Manual 
(https://gcc.gnu.org/onlinedocs/gcc/Modifiers.html#Modifiers) sagt:

If you specify ‘=’ or ‘+’ in a constraint, you put it in the first 
character of the constraint string.

Dreh' das "=" und das "&" um und es funktioniert (wahrscheinlich).

von Rolf D. (rolfdegen)


Lesenswert?

Ahhhhhhhh..... geil ! Gleich 5000000 Warnungen weniger.

Vielen Dank für deinen Tip. Der hat mir sehr geholfen :)))

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Rolf D. schrieb:
>   : "a" (a), "a" (balance), "a" (b)

Hat nix mit der Warnung zu tun, aber als Constraint für MUL genügt "r". 
"a" braucht's nur bei Verwendung von FMUL[S[U]].

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.