<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://satyria.de/arm/index.php?action=history&amp;feed=atom&amp;title=Verzweigungen%2C_Ausnahmegenerierung_und_Systemanweisungen</id>
	<title>Verzweigungen, Ausnahmegenerierung und Systemanweisungen - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://satyria.de/arm/index.php?action=history&amp;feed=atom&amp;title=Verzweigungen%2C_Ausnahmegenerierung_und_Systemanweisungen"/>
	<link rel="alternate" type="text/html" href="https://satyria.de/arm/index.php?title=Verzweigungen,_Ausnahmegenerierung_und_Systemanweisungen&amp;action=history"/>
	<updated>2026-06-24T12:23:04Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in C und Assembler mit Raspberry</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://satyria.de/arm/index.php?title=Verzweigungen,_Ausnahmegenerierung_und_Systemanweisungen&amp;diff=545&amp;oldid=prev</id>
		<title>Satyria: Die Seite wurde neu angelegt: „Lass uns die Themen Verzweigungen, Ausnahmegenerierung und Systemanweisungen in der ARMv8-Architektur ausführlich betrachten.  == Verzweigungen (Branches) == Verzweigungen sind essenziell für die Programmsteuerung und die Implementierung von Schleifen, Bedingungslogik und Funktionsaufrufen. In ARMv8 gibt es verschiedene Instruktionen zum Handhaben von Verzweigungen.  === Unbedingte Verzweigung ===  * B (Branch) :Beispiel: &lt;code&gt;B label&lt;/code&gt; :Erläuter…“</title>
		<link rel="alternate" type="text/html" href="https://satyria.de/arm/index.php?title=Verzweigungen,_Ausnahmegenerierung_und_Systemanweisungen&amp;diff=545&amp;oldid=prev"/>
		<updated>2024-09-26T09:49:44Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Lass uns die Themen Verzweigungen, Ausnahmegenerierung und Systemanweisungen in der ARMv8-Architektur ausführlich betrachten.  == Verzweigungen (Branches) == Verzweigungen sind essenziell für die Programmsteuerung und die Implementierung von Schleifen, Bedingungslogik und Funktionsaufrufen. In ARMv8 gibt es verschiedene Instruktionen zum Handhaben von Verzweigungen.  === Unbedingte Verzweigung ===  * B (Branch) :Beispiel: &amp;lt;code&amp;gt;B label&amp;lt;/code&amp;gt; :Erläuter…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Lass uns die Themen Verzweigungen, Ausnahmegenerierung und Systemanweisungen in der ARMv8-Architektur ausführlich betrachten.&lt;br /&gt;
&lt;br /&gt;
== Verzweigungen (Branches) ==&lt;br /&gt;
Verzweigungen sind essenziell für die Programmsteuerung und die Implementierung von Schleifen, Bedingungslogik und Funktionsaufrufen. In ARMv8 gibt es verschiedene Instruktionen zum Handhaben von Verzweigungen.&lt;br /&gt;
&lt;br /&gt;
=== Unbedingte Verzweigung ===&lt;br /&gt;
&lt;br /&gt;
* B (Branch)&lt;br /&gt;
:Beispiel: &amp;lt;code&amp;gt;B label&amp;lt;/code&amp;gt;&lt;br /&gt;
:Erläuterung: Führt einen Sprung zu label aus.&lt;br /&gt;
&lt;br /&gt;
*BL (Branch with Link)&lt;br /&gt;
:Beispiel: &amp;lt;code&amp;gt;BL function&amp;lt;/code&amp;gt;&lt;br /&gt;
:Erläuterung: Springt zu function und speichert die Rücksprungadresse im Link Register (&amp;lt;code&amp;gt;LR&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;X30&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Bedingte Verzweigung ===&lt;br /&gt;
&lt;br /&gt;
* B.&lt;br /&gt;
:Beispiel: &amp;lt;code&amp;gt;B.EQ label&amp;lt;/code&amp;gt;&lt;br /&gt;
:Erläuterung: Springt zu label, wenn die Bedingung (EQ = Equal) erfüllt ist.&lt;br /&gt;
::Bedingungen sind:&lt;br /&gt;
::EQ: Gleich&lt;br /&gt;
::NE: Ungleich&lt;br /&gt;
::GT: Größer als&lt;br /&gt;
::LT: Kleiner als&lt;br /&gt;
::GE: Größer oder gleich&lt;br /&gt;
::LE: Kleiner oder gleich&lt;br /&gt;
::und viele mehr (siehe [[Bedingungscodes]])&lt;br /&gt;
&lt;br /&gt;
=== Vergleich und Verzweigung ===&lt;br /&gt;
&lt;br /&gt;
* CBZ (Compare and Branch if Zero)&lt;br /&gt;
:Beispiel: &amp;lt;code&amp;gt;CBZ X0, label&amp;lt;/code&amp;gt;&lt;br /&gt;
:Erläuterung: Springt zu label, falls &amp;lt;code&amp;gt;X0&amp;lt;/code&amp;gt; gleich null ist.&lt;br /&gt;
&lt;br /&gt;
* CBNZ (Compare and Branch if Nonzero)&lt;br /&gt;
:Beispiel: &amp;lt;code&amp;gt;CBNZ X1, label&amp;lt;/code&amp;gt;&lt;br /&gt;
:Erläuterung: Springt zu label, falls &amp;lt;code&amp;gt;X1&amp;lt;/code&amp;gt; ungleich null ist.&lt;br /&gt;
&lt;br /&gt;
=== Test and Branch ===&lt;br /&gt;
&lt;br /&gt;
* TBZ (Test Bit and Branch if Zero)&lt;br /&gt;
:Beispiel: &amp;lt;code&amp;gt;TBZ X0, #1, label&amp;lt;/code&amp;gt;&lt;br /&gt;
:Erläuterung: Testet das Bit 1 von &amp;lt;code&amp;gt;X0&amp;lt;/code&amp;gt;. Wenn es null ist, wird zu label gesprungen.&lt;br /&gt;
&lt;br /&gt;
* TBNZ (Test Bit and Branch if Nonzero)&lt;br /&gt;
:Beispiel: &amp;lt;code&amp;gt;TBNZ X0, #0, label&amp;lt;/code&amp;gt;&lt;br /&gt;
:Erläuterung: Testet das Bit 0 von &amp;lt;code&amp;gt;X0&amp;lt;/code&amp;gt;. Wenn es eins ist, wird zu label gesprungen.&lt;br /&gt;
&lt;br /&gt;
== Ausnahmegenerierung (Exception Handling) ==&lt;br /&gt;
Exceptions sind spezielle Ereignisse, die den normalen Programmablauf unterbrechen. Sie werden in ARMv8 genutzt, um Fehler, Interrupts oder besondere Bedingungen zu behandeln.&lt;br /&gt;
&lt;br /&gt;
=== Synchrone Exceptions ===&lt;br /&gt;
* SVC (Supervisor Call)&lt;br /&gt;
: Beispiel: &amp;lt;code&amp;gt;SVC #0&amp;lt;/code&amp;gt;&lt;br /&gt;
:Erläuterung: Generiert einen Supervisor Call, der in der Regel genutzt wird, um Betriebssystemdienste zu rufen.&lt;br /&gt;
&lt;br /&gt;
* HVC (Hypervisor Call)&lt;br /&gt;
: Beispiel: &amp;lt;code&amp;gt;HVC #0&amp;lt;/code&amp;gt;&lt;br /&gt;
: Erläuterung: Generiert einen Hypervisor Call, um Hypervisor-Dienste anzufordern.&lt;br /&gt;
&lt;br /&gt;
* SMC (Secure Monitor Call)&lt;br /&gt;
: Beispiel: &amp;lt;code&amp;gt;SMC #0&amp;lt;/code&amp;gt;&lt;br /&gt;
: Erläuterung: Ruft den Secure Monitor, der im TrustZone-Sicherheitsmodus genutzt wird.&lt;br /&gt;
&lt;br /&gt;
=== Asynchrone Exceptions ===&lt;br /&gt;
&lt;br /&gt;
* IRQ (Interrupt Request)&lt;br /&gt;
: Wird durch externe Geräte ausgelöst, um den Prozessor zu unterbrechen und eine bestimmte Routine auszuführen.&lt;br /&gt;
&lt;br /&gt;
* FIQ (Fast Interrupt Request)&lt;br /&gt;
: Ähnlich wie IRQ, jedoch mit höherer Priorität und effizienterem Kontextwechsel.&lt;br /&gt;
&lt;br /&gt;
== Systemanweisungen (System Instructions) ==&lt;br /&gt;
Diese Anweisungen steuern bestimmte Verwaltungsoperationen und betreffen meistens die CPU- oder Memory-Einstellungen.&lt;br /&gt;
&lt;br /&gt;
=== MRS und MSR (Move to/from System Register) ===&lt;br /&gt;
&lt;br /&gt;
* MRS (Move from System Register)&lt;br /&gt;
: Beispiel: &amp;lt;code&amp;gt;MRS X0, SCTLR_EL1&amp;lt;/code&amp;gt;&lt;br /&gt;
: Erläuterung: Liest den Wert des System Control Registers (&amp;lt;code&amp;gt;SCTLR&amp;lt;/code&amp;gt;) und speichert ihn in &amp;lt;code&amp;gt;X0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* MSR (Move to System Register)&lt;br /&gt;
: Beispiel: &amp;lt;code&amp;gt;MSR SCTLR_EL1, X0&amp;lt;/code&amp;gt;&lt;br /&gt;
: Erläuterung: Schreibt den Wert von &amp;lt;code&amp;gt;X0&amp;lt;/code&amp;gt; in das System Control Register (&amp;lt;code&amp;gt;SCTLR&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== NOP (No Operation) ===&lt;br /&gt;
Beispiel: &amp;lt;code&amp;gt;NOP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erläuterung: Führt keine Operation aus und wird häufig für Timing-Delays oder Pipeline-Anpassungen verwendet.&lt;br /&gt;
&lt;br /&gt;
=== System Call ===&lt;br /&gt;
&lt;br /&gt;
Generierte Systemanrufe für spezielle Dienste und setzten sich oft aus speziellen Instruktionen zusammen.&lt;/div&gt;</summary>
		<author><name>Satyria</name></author>
	</entry>
</feed>