Forum: Mikrocontroller und Digitale Elektronik ARM7 Assembler: Carry-Flag mit weniger als 3 Befehlen "übertragen"


von Peter P. (uncle-sam7)


Lesenswert?

Hallo NG,

gibt es eine Möglichkeit, das Carryflag mit nur einem Befehl in ein 
Register-Bit zu übertragen? (flag_c ist in meinem Fall 0x01)

Momentan habe ich folgenden Code:

  lsrs r10, r10, #1       // shift right r10 (A)
  orrcs r9, r9, #flag_c    // carry set
  andcc r9, r9, #0xff - flag_c  // carry clear

Danke im vorraus!
Peter

von (prx) A. K. (prx)


Lesenswert?

mov r0, r0, rrx   // oben reinschieben
-oder-
adc r0, r0, r0    // unten reinschieben
-oder-
mrs r0, cpsr

von (prx) A. K. (prx)


Lesenswert?

Peter Pippinger schrieb:

>   andcc r9, r9, #0xff - flag_c  // carry clear

Dabei gehen die Bits 8..31 über die Wupper. Besser:
   biccc r9, r9, #flag_c  // carry clear

Weniger als deine 2 Befehle geht m.W. nicht, wenn die übrigen Bits des 
Zielregisters unverändert bleiben sollen.

von Peter P. (uncle-sam7)


Lesenswert?

A. K. schrieb:
> Dabei gehen die Bits 8..31 über die Wupper.

Hallo. ja, das mit den restlichen Bits ist in diesem Fall Absicht, da 
ich in diesen Registern die Register des "alten 6502" abbilde. Die waren 
nur 8 Bit. Aber das ist dennoch eine sehr interessante Frage für mich 
als Anfänger. Könnte ich mit den restlichen Bits evtl. auch effizient 
arbeiten?

Das wäre natürlich richtig fein, wenn ich 4 8Bit-Register in einem 
r-register des ARM unterbringen würde. Gibts da direkt Befehle, um 
darauf zuzugreifen? Oder werden das dann zwangsweise mehrere Befehle im 
Programm?

MfG
Peter

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Peter Pippinger schrieb:
> Das wäre natürlich richtig fein, wenn ich 4 8Bit-Register in einem
> r-register des ARM unterbringen würde.

Nein, das wäre ziemlicher Quatsch.

> Gibts da direkt Befehle, um darauf zuzugreifen?

Nicht im ARM7.

> Oder werden das dann zwangsweise mehrere Befehle im Programm?

In jedem Fall. Du musst die Inhalte zum Rechnen wieder rauspopeln.

--
Marcus

von Peter (Gast)


Lesenswert?

Marcus Harnisch schrieb:
> Peter Pippinger schrieb:
>> Das wäre natürlich richtig fein, wenn ich 4 8Bit-Register in einem
>> r-register des ARM unterbringen würde.
> Nein, das wäre ziemlicher Quatsch.

ja, wenns nicht geht ist´s natürlich Quatsch. Wusste nicht, ob es nicht 
sowas ähnliches wie bei x86 gibt: Register AL, AH, AX und EAX etc...;

>> Oder werden das dann zwangsweise mehrere Befehle im Programm?
>In jedem Fall. Du musst die Inhalte zum Rechnen wieder rauspopeln.

Hab sie ja alle in eigenen Registern, weil ich mir das "rauspopeln" 
sparen möchte. Ich dachte nur, wenns da vielleicht Möglichkeiten gibt um 
Register zu "sparen" dann mach ich das.

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.