Forum: Mikrocontroller und Digitale Elektronik SSAT Befehl im ARM Befehlssatz


von Aspire (Gast)


Lesenswert?

Zur Zeit bin ich dabei mich mit dem THUMB2 Befehlen des Cortex M3 
auseinander zu setzten un will jeden Befehl einmal testen. Bin jetzt auf 
den Befehl SSAT gestoßen. Die Syntax ist: SSAT<c> <Rd>, <#imm>, 
<Rn>{,<shift>} und die Definition lautet. Signed saturate.
Ich kann damit leider nix anfangen. Kann mir jemand erklären was genau 
der Befehl macht?

Zum testen hab ich mal

LDR  R4,=0xFFFF
SSAT  R5,#0xF,R4

debugged aber aus dem Ergebniss kann ich keine Schlüsse ziehen. Das 
Zielregister enthält anschließend 0x00003FFF.

MFG

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Aspire wrote:
> Zur Zeit bin ich dabei mich mit dem THUMB2 Befehlen des Cortex M3
> auseinander zu setzten un will jeden Befehl einmal testen. Bin jetzt auf
> den Befehl SSAT gestoßen. Die Syntax ist: SSAT<c> <Rd>, <#imm>,
> <Rn>{,<shift>} und die Definition lautet. Signed saturate.
> Ich kann damit leider nix anfangen. Kann mir jemand erklären was genau
> der Befehl macht?
>
> Zum testen hab ich mal
>
> LDR  R4,=0xFFFF
> SSAT  R5,#0xF,R4
>
> debugged aber aus dem Ergebniss kann ich keine Schlüsse ziehen. Das
> Zielregister enthält anschließend 0x00003FFF.

Der Befehl nimmt die vorzeichenbehaftete Zahl, die sich aus dem 
(verschobenen) Inhalt von <Rn> ergibt und sättigt sie an der <#imm>'ten 
Bitposition.

Woher weißt Du denn von dem Befehl? Steht da sonst nichts weiter?

Gruß
Marcus
http://www.doulos.com/arm/

von Aspire (Gast)


Lesenswert?

Die IAR Entwicklungsumbebung liefert einen ganzen Satz an pdf Dateien. 
Unter anderem eine CortexM3_TRM, die das programmieren mit Assembler 
etwas erläutert. Unter anderem wird hier auch der unterstützte THUMB2 
Befehlssatz aufgeführt. Allerdings gibt es hier nur eine 
Kurzbeschreibung der Befehle, keine genaue Erläuterung.

Danke deine Antwort hat mir für´s erste weitergeholfen.Ok die Syntax ist 
mir jetzt klar. Mir ist dieses "sättigen" allerdings nicht ganz klar.

Also im oben genannten Beispiel würde das dann bedeuten 0xFFFF wird an 
der 16ten Stelle gesättigt. Aber 0x3FFF würde doch nur 14 `1` 
entsprechen?
Hängt das mit dem signed zusammen?

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Aspire wrote:
> Allerdings gibt es hier nur eine Kurzbeschreibung der Befehle, keine
> genaue Erläuterung.

Das Cortex-M3 Application Level Architecture Reference Manual gibt Dir 
mehr Details als Du Dir wünschen würdest. Für den Hausgebrauch tut's 
aber auch

http://infocenter.arm.com/help/topic/com.arm.doc.dui0379a/Cjafgdih.html

> Aber 0x3FFF würde doch nur 14 `1` entsprechen?
> Hängt das mit dem signed zusammen?

Ja. Schlag mal die Details in der Doku nach.

Gruß
Marcus
http://www.doulos.com/arm/

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.