ASM Befehl ROL in GGC

Gast #434273
Lesenswert?
• ▲
▼
In gewisser Weise >> und <<, aber auch *2 und /2.
Beachte die Anweisungen   a*=2;   oder    a>>=1;   oder   a/=2;
Allerdings wird hier das Carry ignoriert, das musst Du extra (mit 
eigener Variable) behandeln, wenn Du es brauchst.

oder asm(ror);

Was möchtest Du denn genau machen?
OP #434287
Lesenswert?
• ▲
▼
Hallo Profi

Aber ich will rotieren (carryübertrag auf Bit 0) mit einem C-Befehl.

Ich will z.B. einen Lauflicht am Port B machen.

         PORTB<<=1;
  if (bit_is_set(SREG,0)) PORTB|= (1<<PB0);

Da sollte es einen Befehl in C geben der analog zu ROL funktioniert.

Gibt es das ?

Gruss
   Duri
Gast #662700
Lesenswert?
• ▲
▼
> Aber ich will rotieren (carryübertrag auf Bit 0) mit einem C-Befehl.

Das geht nicht, da es in C Flags gar nicht gibt.

> Da sollte es einen Befehl in C geben der analog zu ROL funktioniert.

Du kannst auch inline-Assembler verwenden.

> //ROR
> PORTB = (PORTB<<1) | (PORTB>>7);

Etwas besser wäre dann noch:

uint8_t portb = PORTB;
PORTB = (portb<<1) | (portb>>7);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren