<?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=Strukturen_in_Assembler</id>
	<title>Strukturen in Assembler - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://satyria.de/arm/index.php?action=history&amp;feed=atom&amp;title=Strukturen_in_Assembler"/>
	<link rel="alternate" type="text/html" href="https://satyria.de/arm/index.php?title=Strukturen_in_Assembler&amp;action=history"/>
	<updated>2026-06-25T02:06:50Z</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=Strukturen_in_Assembler&amp;diff=518&amp;oldid=prev</id>
		<title>Satyria: /* Erklärung der Makros */</title>
		<link rel="alternate" type="text/html" href="https://satyria.de/arm/index.php?title=Strukturen_in_Assembler&amp;diff=518&amp;oldid=prev"/>
		<updated>2024-09-24T10:35:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Erklärung der Makros&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 24. September 2024, 11:35 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l228&quot;&gt;Zeile 228:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 228:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Makro-Definitionen&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Makro-Definitionen&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;.macro definiert ein Makro. In den runden Klammern folgen die Parameter, die dem Makro bei der Verwendung übergeben werden.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;.macro&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;definiert ein Makro. In den runden Klammern folgen die Parameter, die dem Makro bei der Verwendung übergeben werden.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ldr x0, =\name lädt die Adresse der Struktur in Register x0.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;ldr x0, =\name&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;lädt die Adresse der Struktur in Register &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;x0&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;mov w1, \x_val lädt den Wert des x-Feldes in Register w1.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;mov w1, \x_val&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;lädt den Wert des x-Feldes in Register &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;w1&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;str w1, [x0, #0] speichert den Wert aus w1 an der durch x0 und Offset bestimmten Adresse.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;str w1, [x0, #0]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;speichert den Wert aus &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;w1&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;an der durch &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;x0&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;und Offset bestimmten Adresse.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;Verwendung der Makros&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;Verwendung der Makros&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Du rufst das Makro auf, indem du seinen Namen und die notwendigen Parameter angibst, z.B. INIT_POINT p, 10, 20.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Du rufst das Makro auf, indem du seinen Namen und die notwendigen Parameter angibst, z.B. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;INIT_POINT p, 10, 20&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dies verbessert die Lesbarkeit und Wartung des Codes, da du häufiger wiederkehrenden Code zentral an einer Stelle definieren und einfach aufrufen kannst.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dies verbessert die Lesbarkeit und Wartung des Codes, da du häufiger wiederkehrenden Code zentral an einer Stelle definieren und einfach aufrufen kannst.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Makros sind somit eine mächtige Methode, um wiederholten Code zu reduzieren und sicherzustellen, dass komplexe Aufgaben konsistent durchgeführt werden.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Makros sind somit eine mächtige Methode, um wiederholten Code zu reduzieren und sicherzustellen, dass komplexe Aufgaben konsistent durchgeführt werden.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Satyria</name></author>
	</entry>
	<entry>
		<id>https://satyria.de/arm/index.php?title=Strukturen_in_Assembler&amp;diff=517&amp;oldid=prev</id>
		<title>Satyria: /* Erklärung */</title>
		<link rel="alternate" type="text/html" href="https://satyria.de/arm/index.php?title=Strukturen_in_Assembler&amp;diff=517&amp;oldid=prev"/>
		<updated>2024-09-24T10:33:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Erklärung&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 24. September 2024, 11:33 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l99&quot;&gt;Zeile 99:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 99:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Speicherreservierung&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Speicherreservierung&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:.skip &amp;lt;Anzahl Bytes&amp;gt; reserviert Speicherplatz in der .data-Sektion für die Struktur.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;.skip &amp;lt;Anzahl Bytes&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;&amp;lt;/code&lt;/ins&gt;&amp;gt; reserviert Speicherplatz in der .data-Sektion für die Struktur.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Adress- und Wertzuweisung&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Adress- und Wertzuweisung&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:&#039;&#039;&#039;Laden der Basisadresse&#039;&#039;&#039;: Die Basisadresse der Struktur wird in ein Register geladen (ldr x0, =rect).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:&#039;&#039;&#039;Laden der Basisadresse&#039;&#039;&#039;: Die Basisadresse der Struktur wird in ein Register geladen (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;ldr x0, =rect&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:&#039;&#039;&#039;Zuweisung&#039;&#039;&#039;: Mit str wird der Wert an die berechnete Adresse geschrieben, unter Hinzufügung der relevanten Offsets.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:&#039;&#039;&#039;Zuweisung&#039;&#039;&#039;: Mit &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;str&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;wird der Wert an die berechnete Adresse geschrieben, unter Hinzufügung der relevanten Offsets.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tipps ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tipps ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Satyria</name></author>
	</entry>
	<entry>
		<id>https://satyria.de/arm/index.php?title=Strukturen_in_Assembler&amp;diff=516&amp;oldid=prev</id>
		<title>Satyria am 24. September 2024 um 10:29 Uhr</title>
		<link rel="alternate" type="text/html" href="https://satyria.de/arm/index.php?title=Strukturen_in_Assembler&amp;diff=516&amp;oldid=prev"/>
		<updated>2024-09-24T10:29:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://satyria.de/arm/index.php?title=Strukturen_in_Assembler&amp;amp;diff=516&amp;amp;oldid=515&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Satyria</name></author>
	</entry>
	<entry>
		<id>https://satyria.de/arm/index.php?title=Strukturen_in_Assembler&amp;diff=515&amp;oldid=prev</id>
		<title>Satyria: Die Seite wurde neu angelegt: „Strukturen (structs) sind in C ein wesentlicher Bestandteil zur Organisation und Gruppierung von Daten. In ARM64-Assembler können Strukturen durch die Offsets der einzelnen Felder simuliert werden. Hier ist eine Erklärung, wie man Strukturen in ARM64-Assembler umsetzt, einschließlich der Handhabung von verschachtelten Strukturen.  Grundlagen Eine Struktur in C kann in ARM64-Assembler dargestellt werden, indem man die Offsets der einzelnen Mitglieder de…“</title>
		<link rel="alternate" type="text/html" href="https://satyria.de/arm/index.php?title=Strukturen_in_Assembler&amp;diff=515&amp;oldid=prev"/>
		<updated>2024-09-24T10:13:24Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Strukturen (structs) sind in C ein wesentlicher Bestandteil zur Organisation und Gruppierung von Daten. In ARM64-Assembler können Strukturen durch die Offsets der einzelnen Felder simuliert werden. Hier ist eine Erklärung, wie man Strukturen in ARM64-Assembler umsetzt, einschließlich der Handhabung von verschachtelten Strukturen.  Grundlagen Eine Struktur in C kann in ARM64-Assembler dargestellt werden, indem man die Offsets der einzelnen Mitglieder de…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Strukturen (structs) sind in C ein wesentlicher Bestandteil zur Organisation und Gruppierung von Daten. In ARM64-Assembler können Strukturen durch die Offsets der einzelnen Felder simuliert werden. Hier ist eine Erklärung, wie man Strukturen in ARM64-Assembler umsetzt, einschließlich der Handhabung von verschachtelten Strukturen.&lt;br /&gt;
&lt;br /&gt;
Grundlagen&lt;br /&gt;
Eine Struktur in C kann in ARM64-Assembler dargestellt werden, indem man die Offsets der einzelnen Mitglieder der Struktur manuell verwaltet. Dies erfordert eine genaue Kenntnis der Byte-Offsets, um auf die richtigen Daten zuzugreifen.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Einfache Struktur&lt;br /&gt;
C-Code:&lt;br /&gt;
struct Point {&lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Point p;&lt;br /&gt;
p.x = 10;&lt;br /&gt;
p.y = 20;&lt;br /&gt;
ARM64-Assembler:&lt;br /&gt;
Definieren der Offsets:&lt;br /&gt;
&lt;br /&gt;
.equ POINT_X_OFFSET, 0&lt;br /&gt;
.equ POINT_Y_OFFSET, 4&lt;br /&gt;
.equ POINT_SIZE, 8&lt;br /&gt;
Speicher reservieren und Struktur initialisieren:&lt;br /&gt;
&lt;br /&gt;
.data&lt;br /&gt;
p:  .skip POINT_SIZE  // Platz für Struktur reservieren (8 Bytes)&lt;br /&gt;
&lt;br /&gt;
.text&lt;br /&gt;
ldr x0, =p         // Adresse von p in x0 laden&lt;br /&gt;
mov w1, #10        // Wert 10 in w1 laden&lt;br /&gt;
str w1, [x0, #POINT_X_OFFSET] // p.x = 10&lt;br /&gt;
mov w1, #20        // Wert 20 in w1 laden&lt;br /&gt;
str w1, [x0, #POINT_Y_OFFSET] // p.y = 20&lt;br /&gt;
Beispiel: Verschachtelte Strukturen&lt;br /&gt;
C-Code:&lt;br /&gt;
struct Point {&lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Rectangle {&lt;br /&gt;
    struct Point top_left;&lt;br /&gt;
    struct Point bottom_right;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Rectangle rect;&lt;br /&gt;
rect.top_left.x = 10;&lt;br /&gt;
rect.top_left.y = 20;&lt;br /&gt;
rect.bottom_right.x = 30;&lt;br /&gt;
rect.bottom_right.y = 40;&lt;br /&gt;
ARM64-Assembler:&lt;br /&gt;
Definieren der Offsets:&lt;br /&gt;
&lt;br /&gt;
// Point Struktur&lt;br /&gt;
.equ POINT_X_OFFSET, 0&lt;br /&gt;
.equ POINT_Y_OFFSET, 4&lt;br /&gt;
.equ POINT_SIZE, 8&lt;br /&gt;
&lt;br /&gt;
// Rectangle Struktur&lt;br /&gt;
.equ RECT_TL_OFFSET, 0&lt;br /&gt;
.equ RECT_BR_OFFSET, POINT_SIZE&lt;br /&gt;
.equ RECT_SIZE, 2 * POINT_SIZE&lt;br /&gt;
Speicher reservieren und Struktur initialisieren:&lt;br /&gt;
&lt;br /&gt;
.data&lt;br /&gt;
rect: .skip RECT_SIZE  // Platz für Struktur reservieren (16 Bytes)&lt;br /&gt;
&lt;br /&gt;
.text&lt;br /&gt;
ldr x0, =rect      // Adresse von rect in x0 laden&lt;br /&gt;
&lt;br /&gt;
// rect.top_left.x = 10&lt;br /&gt;
mov w1, #10&lt;br /&gt;
str w1, [x0, #RECT_TL_OFFSET + POINT_X_OFFSET]&lt;br /&gt;
&lt;br /&gt;
// rect.top_left.y = 20&lt;br /&gt;
mov w1, #20&lt;br /&gt;
str w1, [x0, #RECT_TL_OFFSET + POINT_Y_OFFSET]&lt;br /&gt;
&lt;br /&gt;
// rect.bottom_right.x = 30&lt;br /&gt;
mov w1, #30&lt;br /&gt;
str w1, [x0, #RECT_BR_OFFSET + POINT_X_OFFSET]&lt;br /&gt;
&lt;br /&gt;
// rect.bottom_right.y = 40&lt;br /&gt;
mov w1, #40&lt;br /&gt;
str w1, [x0, #RECT_BR_OFFSET + POINT_Y_OFFSET]&lt;br /&gt;
Erklärung&lt;br /&gt;
Offset-Definition:&lt;br /&gt;
&lt;br /&gt;
Direkte Offsets: Die Offsets der Felder in einer Struktur werden durch konstante Definitionen (.equ) festgelegt.&lt;br /&gt;
Verschachtelung: Offsets verschachtelter Strukturen werden addiert, um den Zugriff auf die inneren Felder zu ermöglichen.&lt;br /&gt;
Speicherreservierung:&lt;br /&gt;
&lt;br /&gt;
.skip &amp;lt;Anzahl Bytes&amp;gt; reserviert Speicherplatz in der .data-Sektion für die Struktur.&lt;br /&gt;
Adress- und Wertzuweisung:&lt;br /&gt;
&lt;br /&gt;
Laden der Basisadresse: Die Basisadresse der Struktur wird in ein Register geladen (ldr x0, =rect).&lt;br /&gt;
Zuweisung: Mit str wird der Wert an die berechnete Adresse geschrieben, unter Hinzufügung der relevanten Offsets.&lt;br /&gt;
Tipps&lt;br /&gt;
Alignment: Achte darauf, dass die Strukturfelder entsprechend ihrer natürlichen Ausrichtung ausgerichtet sind, um mögliche Zugriffsverletzungen zu vermeiden.&lt;br /&gt;
Dokumentation: Gute Kommentare und sorgfältige Dokumentation der Offsets und Strukturen erleichtern das Verständnis und die Wartung des Assemblers.&lt;br /&gt;
Makros in Assembler können helfen, den Code lesbarer, wartbarer und generischer zu machen, indem sie häufig wiederkehrende Codefragmente abstrahieren und automatisieren. In der ARM64-Assembler-Sprache können Makros verwendet werden, um die Arbeit mit Strukturen zu erleichtern, insbesondere wenn es komplexere oder verschachtelte Strukturen gibt.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige Beispiele, wie Makros die Arbeit mit Strukturen in ARM64-Assembler vereinfachen können:&lt;br /&gt;
&lt;br /&gt;
Beispiel 1: Einfache Struktur mit Makros&lt;br /&gt;
C-Code:&lt;br /&gt;
struct Point {&lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Point p;&lt;br /&gt;
p.x = 10;&lt;br /&gt;
p.y = 20;&lt;br /&gt;
ARM64-Assembler mit Makros:&lt;br /&gt;
Makro-Definitionen:&lt;br /&gt;
&lt;br /&gt;
.macro INIT_POINT name, x_val, y_val&lt;br /&gt;
    ldr x0, =\name&lt;br /&gt;
    mov w1, \x_val&lt;br /&gt;
    str w1, [x0, #0]          // x offset&lt;br /&gt;
    mov w1, \y_val&lt;br /&gt;
    str w1, [x0, #4]          // y offset&lt;br /&gt;
.endm&lt;br /&gt;
&lt;br /&gt;
.macro SET_POINT_X name, x_val&lt;br /&gt;
    ldr x0, =\name&lt;br /&gt;
    mov w1, \x_val&lt;br /&gt;
    str w1, [x0, #0]          // x offset&lt;br /&gt;
.endm&lt;br /&gt;
&lt;br /&gt;
.macro SET_POINT_Y name, y_val&lt;br /&gt;
    ldr x0, =\name&lt;br /&gt;
    mov w1, \y_val&lt;br /&gt;
    str w1, [x0, #4]          // y offset&lt;br /&gt;
.endm&lt;br /&gt;
Verwendung der Makros:&lt;br /&gt;
&lt;br /&gt;
.data&lt;br /&gt;
p:  .skip 8  // Platz für Struktur reservieren (8 Bytes)&lt;br /&gt;
&lt;br /&gt;
.text&lt;br /&gt;
INIT_POINT p, 10, 20&lt;br /&gt;
Beispiel 2: Verschachtelte Strukturen mit Makros&lt;br /&gt;
C-Code:&lt;br /&gt;
struct Point {&lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Rectangle {&lt;br /&gt;
    struct Point top_left;&lt;br /&gt;
    struct Point bottom_right;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Rectangle rect;&lt;br /&gt;
rect.top_left.x = 10;&lt;br /&gt;
rect.top_left.y = 20;&lt;br /&gt;
rect.bottom_right.x = 30;&lt;br /&gt;
rect.bottom_right.y = 40;&lt;br /&gt;
ARM64-Assembler mit Makros:&lt;br /&gt;
Makro-Definitionen:&lt;br /&gt;
&lt;br /&gt;
.macro INIT_RECTANGLE name, tlx, tly, brx, bry&lt;br /&gt;
    ldr x0, =\name&lt;br /&gt;
    mov w1, \tlx&lt;br /&gt;
    str w1, [x0, #0]          // top_left.x offset&lt;br /&gt;
    mov w1, \tly&lt;br /&gt;
    str w1, [x0, #4]          // top_left.y offset&lt;br /&gt;
    mov w1, \brx&lt;br /&gt;
    str w1, [x0, #8]          // bottom_right.x offset&lt;br /&gt;
    mov w1, \bry&lt;br /&gt;
    str w1, [x0, #12]         // bottom_right.y offset&lt;br /&gt;
.endm&lt;br /&gt;
&lt;br /&gt;
.macro SET_RECT_TL_X name, tlx&lt;br /&gt;
    ldr x0, =\name&lt;br /&gt;
    mov w1, \tlx&lt;br /&gt;
    str w1, [x0, #0]          // top_left.x offset&lt;br /&gt;
.endm&lt;br /&gt;
&lt;br /&gt;
.macro SET_RECT_TL_Y name, tly&lt;br /&gt;
    ldr x0, =\name&lt;br /&gt;
    mov w1, \tly&lt;br /&gt;
    str w1, [x0, #4]          // top_left.y offset&lt;br /&gt;
.endm&lt;br /&gt;
&lt;br /&gt;
.macro SET_RECT_BR_X name, brx&lt;br /&gt;
    ldr x0, =\name&lt;br /&gt;
    mov w1, \brx&lt;br /&gt;
    str w1, [x0, #8]          // bottom_right.x offset&lt;br /&gt;
.endm&lt;br /&gt;
&lt;br /&gt;
.macro SET_RECT_BR_Y name, bry&lt;br /&gt;
    ldr x0, =\name&lt;br /&gt;
    mov w1, \bry&lt;br /&gt;
    str w1, [x0, #12]         // bottom_right.y offset&lt;br /&gt;
.endm&lt;br /&gt;
Verwendung der Makros:&lt;br /&gt;
&lt;br /&gt;
.data&lt;br /&gt;
rect: .skip 16  // Platz für Struktur reservieren (16 Bytes)&lt;br /&gt;
&lt;br /&gt;
.text&lt;br /&gt;
INIT_RECTANGLE rect, 10, 20, 30, 40&lt;br /&gt;
Erklärung der Makros&lt;br /&gt;
Makro-Definitionen:&lt;br /&gt;
&lt;br /&gt;
.macro definiert ein Makro. In den runden Klammern folgen die Parameter, die dem Makro bei der Verwendung übergeben werden.&lt;br /&gt;
ldr x0, =\name lädt die Adresse der Struktur in Register x0.&lt;br /&gt;
mov w1, \x_val lädt den Wert des x-Feldes in Register w1.&lt;br /&gt;
str w1, [x0, #0] speichert den Wert aus w1 an der durch x0 und Offset bestimmten Adresse.&lt;br /&gt;
Verwendung der Makros:&lt;br /&gt;
&lt;br /&gt;
Du rufst das Makro auf, indem du seinen Namen und die notwendigen Parameter angibst, z.B. INIT_POINT p, 10, 20.&lt;br /&gt;
Dies verbessert die Lesbarkeit und Wartung des Codes, da du häufiger wiederkehrenden Code zentral an einer Stelle definieren und einfach aufrufen kannst.&lt;br /&gt;
Makros sind somit eine mächtige Methode, um wiederholten Code zu reduzieren und sicherzustellen, dass komplexe Aufgaben konsistent durchgeführt werden. Wenn du weitere Beispiele benötigst oder Fragen hast, stehe ich gerne zur Verfügung!&lt;/div&gt;</summary>
		<author><name>Satyria</name></author>
	</entry>
</feed>