<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[inline asm mit gcc: kein zugriff alle register]]></title><description><![CDATA[<p>hi!</p>
<p>ich versuche gerade eine einfache funktion in inline-assembler zu schreiben. allerdings fummelt gcc an meinem code rum. warum macht der das und wie kann man das abstellen?</p>
<pre><code class="language-cpp">int main()
{
	__asm__(&quot;xorq 	%rcx, %rcx\n\t&quot;
			:
			:
			: &quot;rcx&quot;);

	return 0;
}
</code></pre>
<p>daraus wird:</p>
<pre><code class="language-asm">.file	&quot;rip.c&quot;
	.text
.globl main
	.type	main, @function
main:
.LFB2:
	pushq	%rbp
.LCFI0:
	movq	%rsp, %rbp
.LCFI1:
#APP
	xorq 	cx, cx ; fehler

#NO_APP
	movl	$0, %eax
	leave
	ret
.LFE2:
	.size	main, .-main
</code></pre>
<p>wieso ersetzt der gcc meine registerangabe, obwohl sogar noch explizit eine größe angegeben ist?</p>
<p>gcc version ist 4.1.2</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201051/inline-asm-mit-gcc-kein-zugriff-alle-register</link><generator>RSS for Node</generator><lastBuildDate>Mon, 29 Jun 2026 04:39:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201051.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Dec 2007 17:09:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to inline asm mit gcc: kein zugriff alle register on Sun, 23 Dec 2007 17:09:03 GMT]]></title><description><![CDATA[<p>hi!</p>
<p>ich versuche gerade eine einfache funktion in inline-assembler zu schreiben. allerdings fummelt gcc an meinem code rum. warum macht der das und wie kann man das abstellen?</p>
<pre><code class="language-cpp">int main()
{
	__asm__(&quot;xorq 	%rcx, %rcx\n\t&quot;
			:
			:
			: &quot;rcx&quot;);

	return 0;
}
</code></pre>
<p>daraus wird:</p>
<pre><code class="language-asm">.file	&quot;rip.c&quot;
	.text
.globl main
	.type	main, @function
main:
.LFB2:
	pushq	%rbp
.LCFI0:
	movq	%rsp, %rbp
.LCFI1:
#APP
	xorq 	cx, cx ; fehler

#NO_APP
	movl	$0, %eax
	leave
	ret
.LFE2:
	.size	main, .-main
</code></pre>
<p>wieso ersetzt der gcc meine registerangabe, obwohl sogar noch explizit eine größe angegeben ist?</p>
<p>gcc version ist 4.1.2</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425265</guid><dc:creator><![CDATA[asm-problem]]></dc:creator><pubDate>Sun, 23 Dec 2007 17:09:03 GMT</pubDate></item><item><title><![CDATA[Reply to inline asm mit gcc: kein zugriff alle register on Mon, 24 Dec 2007 12:08:02 GMT]]></title><description><![CDATA[<p>Hmm Sieht allerdings komisch aus.</p>
<p>Aber in dem entstehendem listing sthet doch xor<strong>q</strong> cx, cx</p>
<p>also <strong>q</strong> für 64 bit. Vllt zeigt es nur aus irgend einem Grund cx statt rcx an, aber es wird schließlich xor<strong>q</strong> verwendet und net die 16 bit variante ?!?!</p>
<p>Vergleich mal im hexeditor den assemblierten code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425580</guid><dc:creator><![CDATA[dfgdfg]]></dc:creator><pubDate>Mon, 24 Dec 2007 12:08:02 GMT</pubDate></item><item><title><![CDATA[Reply to inline asm mit gcc: kein zugriff alle register on Tue, 25 Dec 2007 14:18:48 GMT]]></title><description><![CDATA[<p>dfgdfg schrieb:</p>
<blockquote>
<p>Vergleich mal im hexeditor den assemblierten code.</p>
</blockquote>
<p>das geht nicht, weil gas den compiliervorgang abbricht. den assembler-code habe ich mit &quot;gcc --save-temps rip.c&quot; erhalten.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425912</guid><dc:creator><![CDATA[asm_problem]]></dc:creator><pubDate>Tue, 25 Dec 2007 14:18:48 GMT</pubDate></item><item><title><![CDATA[Reply to inline asm mit gcc: kein zugriff alle register on Tue, 25 Dec 2007 14:22:21 GMT]]></title><description><![CDATA[<p>dfgdfg schrieb:</p>
<blockquote>
<p>Hmm Sieht allerdings komisch aus.</p>
<p>Aber in dem entstehendem listing sthet doch xor<strong>q</strong> cx, cx</p>
<p>also <strong>q</strong> für 64 bit. Vllt zeigt es nur aus irgend einem Grund cx statt rcx an, aber es wird schließlich xor<strong>q</strong> verwendet und net die 16 bit variante ?!?!</p>
<p>Vergleich mal im hexeditor den assemblierten code.</p>
</blockquote>
<p>ich glaube ich habe mich da nicht klar genug ausgedrückt: dergcc gibt folgenden fehler aus:</p>
<blockquote>
<p>rip.c: In function 'main':<br />
rip.c:3: error: invalid 'asm': operand number missing after %-letter<br />
rip.c:3: error: invalid 'asm': operand number missing after %-letter</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1425917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425917</guid><dc:creator><![CDATA[asm_prblem]]></dc:creator><pubDate>Tue, 25 Dec 2007 14:22:21 GMT</pubDate></item><item><title><![CDATA[Reply to inline asm mit gcc: kein zugriff alle register on Tue, 25 Dec 2007 14:50:34 GMT]]></title><description><![CDATA[<p>Im Assemblerforum dürfte es schneller gehen:</p>
<p>Im Compiler:<br />
%n : Textersatz des Operanden n<br />
%%xxx : Register xxx (2 mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f635.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--dizzy_face"
      title="%)"
      alt="😵"
    /></p>
<p>Der Assembler erwartet nur ein % für Register - weil diese Variante aber durch den Compiler anders interpretiert wird, muss man 2 % benutzen</p>
<p>%rcx: hier wird vermutlich %r ersetzt - (keine Ahnung wie dumm der Compiler bei diesem Vorgang tatsächlich ist) - zu einem Leerstring, cx bleibt stehen... ist aber nur meine Vermutung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425946</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 25 Dec 2007 14:50:34 GMT</pubDate></item></channel></rss>