Forum: Compiler & IDEs probleme mit inline asm


von Gizmo (Gast)


Lesenswert?

hallo

ich steh grad voll aufm Schlauch.
Mein Ziel: eine Funktion schreiben der man ein byte übergeben kann 
dieses wird dann geswapt und über den return value wieder zurück 
gegeben, aber irgend wie funktioniert das nicht so wirklich.

hier mal mein code:

/* -- FUNCTION DECLARATIONS -- */
char tausche (value char)
{
  asm volatile("swap value");
  return value;
}

wäre echt net wenn mir jemand erklären könnte wie man richtig swapt.

danke schon mal für eure Hilfe.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

1
#include <stdint.h>
2
3
static inline uint8_t swab(uint8_t v)
4
{
5
        asm volatile("swap %0": "=r" (v): "0" (v));
6
7
        return v;
8
}
9
10
int main(void)
11
{
12
        return swab(42);
13
}

von Gizmo (Gast)


Lesenswert?

danke Jörg

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ich hoffe, du liest nun aber auch noch im Manual nach, warum das
so funktioniert. ;-)

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.