<?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[hinter den kulissen, keywords]]></title><description><![CDATA[<p>hi, ich hab gerad mit c++ angefangen und wollte mal fragen, wie keywords wie goto, break, continue etc. in der Sprache verankert sind? Wird dafür Speicher beansprucht? Hat ein goto bspw. auch eine Adresse oder einen Zahlenwert? In meinen Büchern konnt ich dazu nichts finden.</p>
<p>mfg<br />
Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184502/hinter-den-kulissen-keywords</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 17:55:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184502.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Jun 2007 19:42:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to hinter den kulissen, keywords on Fri, 15 Jun 2007 19:42:05 GMT]]></title><description><![CDATA[<p>hi, ich hab gerad mit c++ angefangen und wollte mal fragen, wie keywords wie goto, break, continue etc. in der Sprache verankert sind? Wird dafür Speicher beansprucht? Hat ein goto bspw. auch eine Adresse oder einen Zahlenwert? In meinen Büchern konnt ich dazu nichts finden.</p>
<p>mfg<br />
Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1306883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306883</guid><dc:creator><![CDATA[chris19]]></dc:creator><pubDate>Fri, 15 Jun 2007 19:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Sat, 16 Jun 2007 01:20:12 GMT]]></title><description><![CDATA[<p>kann sein, muss nicht. auf jedenfall hast du unter c++ keine möglichkeit, drauf zuzugreifen. vielleicht solltest du dich mal mit assembler beschäftigen, denn das ist es, was dein compiler (im wesentlichen) produziert.</p>
<p>ansonsten: keywords sind keywords, haben eine bestimmte funktion - und funktionen und programme können unter c++ zur laufzeit nicht weiter verändert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307004</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sat, 16 Jun 2007 01:20:12 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Sat, 16 Jun 2007 06:56:05 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Ähhh Sprachkonstrukte von C++ werden vom Compiler in Assembleranweisungen umgesetzt. Einige haben evtl. auf einer bestimmten Plattform ein direktes ASM-Pedant (goto), werden komplexer (throw) oder gar nicht direkt (class) umgesetzt ....</p>
<p>Ich weiß nicht wirklich, worauf Du hinaus willst.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307022</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 16 Jun 2007 06:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Sat, 16 Jun 2007 08:03:14 GMT]]></title><description><![CDATA[<p>ich such nach einer Alternative, bspw eine Schleife ohne übliche Kontrollabfrage zu beenden. Hätte ich die Adresse oder die Codierung auf break, könnte diese ans Ende-1 eines Arrays gesetzt werden und als Anweisung wirken. So gäbs keinen Überlauf und effizienz mässig, naja, ich weiss nicht ob eine kurze Anweisung, die lediglich eine Zahl oder Adresse darstellt bis zu dem break-Punkt, wo das Programm also nicht 'denken' muss, schneller ist als bei jedem Durchlauf eine Kontrollabfrage zu durchlaufen.<br />
Vielleicht ein Array eines user-definierten Datentyp, der mit speziellen Anweisungen und diversen built in Datentypen umzugehen weiss.<br />
Aber dazu weiss ich einfach noch zu wenig über die Sprache.</p>
<p>Fantasy code:</p>
<pre><code class="language-cpp">int* p    = new int[1000000];
p[999999] = int(break);
for(int i = 0;;++i)
   p[i]; 
 //... Anweisungen
</code></pre>
<p>Ich bin aber eigentlich nicht auf der Suche nach mehr Effizienz, sondern will halt, wie der Thread schon sagt, hinter den Kulissen mal schauen. Wie ist die Sprache aufgebaut, wie werden bspw user-Anweisungen durch integrierte Funktionen beinflusst, und lassen sich diese integrierten Funktionen bzw KEywords verändern...</p>
<p>mfg Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307036</guid><dc:creator><![CDATA[chris19]]></dc:creator><pubDate>Sat, 16 Jun 2007 08:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Sat, 16 Jun 2007 08:22:25 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das führt zu nichts. Lern lieber die Syntax von C++. Denn der c++ Standard schreibt keine Implementation vor, schon gar nicht auf dem Assembler-Niveau wie du es wissen willst. Das heißt selbst wenn du dir jetzt eine Möglichkeit findest das so umzusetzten läuft das mit großer wahrscheinlichkeit nur auf deinem Compiler auf deinem Betriebssystem, nichts portables.</p>
<p>Und der korrekte Weg mit C++ Syntax ist dort ganz in Ordnung</p>
<pre><code class="language-cpp">int* p    = new int[1000000];
for(int i = 0;;++i)
{
  if (i == 9999999) break;   
  ...
}
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307040</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 16 Jun 2007 08:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Sat, 16 Jun 2007 09:33:48 GMT]]></title><description><![CDATA[<p>ahja, das ist schade, oder vielleicht auch nicht,abhängig davon ob effizienter oder nicht. Um nochmal auf mein eigentliches Anliegen zurückzukommen, gibts irgendwelche Literatur dazu, wie man eine eigene Programmiersprache erstellt, welche Kenntnisse man dazu braucht? Bjarne Stroustrup hat nach eigenen Aussagen C++ erfunden, wie hader das gemacht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307059</guid><dc:creator><![CDATA[chris19]]></dc:creator><pubDate>Sat, 16 Jun 2007 09:33:48 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Mon, 18 Jun 2007 08:10:53 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Schau dir am besten Uni-Skripte oder Bücher zum Thema Formale Sprachen und Compilerbau. Dazu wirst du keine Tutorials für einen schnellen einfachen Einstieg finden, das ist tiefste Informatik.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308192</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 18 Jun 2007 08:10:53 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Mon, 18 Jun 2007 08:27:37 GMT]]></title><description><![CDATA[<p>Anweisungen in c++ sind wesentlich abstrakter, als Maschienenbefehle. Ein break ist natürlich noch einfach, da es im Einfachsten Fall einfach ein Sprung ans Ende der Schleife ist, und ein Sprung hat normalerweise eine direkte entsprechung im Maschienen-Code.<br />
Was aber, wenn ein schleifen-lokales Objekt zerstört werden muss? Dann muss break natürlich auch noch einen D'tor-Aufruf auslösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308202</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Mon, 18 Jun 2007 08:27:37 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Mon, 18 Jun 2007 15:33:28 GMT]]></title><description><![CDATA[<p>In C++ kann man solche &quot;Optimierungen&quot; nicht wirklich machen.<br />
Guck dir Assembler an, da geht sowas manchmal.</p>
<p>Du kannst aber andere Optimierungen machen, wie z.B. unrolled loops etc. Bringt aber auch meist nicht viel.</p>
<p>Mehr bringt es u.U. wenn man zusieht teure Befehle zu vermeiden. Dividieren ist z.B. teuer, &quot;if&quot; ist teuer (alle Arten von bedingten Sprüngen) etc.<br />
Allerdings gehört da auch einiges an Erfahrung mit dem Compiler seines Vertrauens dazu um abschätzen zu können welchen Assembler Code der Compiler für bestimmte C++ Konstrukte erzeugen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308496</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 18 Jun 2007 15:33:28 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Fri, 20 Jul 2007 09:11:20 GMT]]></title><description><![CDATA[<p>Hi, inzwischen weiss ich break nach meinen Vorstellungen einzusetzen, bringt allerdings optimierungsmässig nix und ist wie einer hier schon sagte sicher auch nicht portabel(mal nebenher, gibts eigentlich Lektüre dazu, was im speziellen portabel/nicht portabel unter c++ ist, oder sind das die unveröffentlichen Erfahrungen des einzelnen im Umgang mit Betriebssystemen?)<br />
Eine der vielen Erkenntnisse, die ich bei diesen Megatests als Anfänger machen konnte, ist eine 20-25 % schnellere Schleife bei Zuweisungen im höherstelligen Bereich, z.b. für grosse arrays:</p>
<pre><code class="language-cpp">int MAX = 40000000;
int i   = 0;
unsigned long* harray = new unsigned long[MAX];
int counter = MAX;
for(;--counter;)
    harray[counter] = 0xFFFFFFFF;
//is flotter als
counter = 0;
for(;counter&lt;MAX;++counter)
   harray[i] = 0xFFFFFFFF;
</code></pre>
<p>Aber das is ja eh sicher compilerabhängig, nich portabel und wenn nicht, dann habt ihrs eh schon alle gewusst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
<p>cu Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329053</guid><dc:creator><![CDATA[chris19]]></dc:creator><pubDate>Fri, 20 Jul 2007 09:11:20 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Fri, 20 Jul 2007 09:18:26 GMT]]></title><description><![CDATA[<p>chris19 schrieb:</p>
<blockquote>
<p>Hi, inzwischen weiss ich break nach meinen Vorstellungen einzusetzen, bringt allerdings optimierungsmässig nix und ist wie einer hier schon sagte sicher auch nicht portabel</p>
</blockquote>
<p>Wer hat das gesagt? 'break' ist ein ganz normaler Befehl in C++ und damit auch protabel. Was nicht portabel ist, war dein Versuch, den Inhalt eines Array &quot;auszuführen&quot;.</p>
<blockquote>
<p>Aber das is ja eh sicher compilerabhängig, nich portabel und wenn nicht, dann habt ihrs eh schon alle gewusst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
</blockquote>
<p>Es ist compiler-abhängig, welche Variante sich besser optimieren lässt (aber auf Assambler-Ebene ist ein Test auf 0 meistens schneller als ein Test auf Gleichheit, also kann es durchaus sein, daß deine erste Schleife etwas schneller ist)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329062</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Jul 2007 09:18:26 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Fri, 20 Jul 2007 09:20:13 GMT]]></title><description><![CDATA[<p>ups in die zweite schleife muss natürlich counter in die arrayindizierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329064</guid><dc:creator><![CDATA[chris19]]></dc:creator><pubDate>Fri, 20 Jul 2007 09:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Fri, 20 Jul 2007 17:37:27 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>'break' ist ein ganz normaler Befehl in C++</p>
</blockquote>
<p>Befehl? Und das von einem Mod! Ich bin schockiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329422</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 20 Jul 2007 17:37:27 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Fri, 20 Jul 2007 17:57:16 GMT]]></title><description><![CDATA[<p>chris19 schrieb:</p>
<blockquote>
<p>Hi, inzwischen weiss ich break nach meinen Vorstellungen einzusetzen, bringt allerdings optimierungsmässig nix und ist wie einer hier schon sagte sicher auch nicht portabel(mal nebenher, gibts eigentlich Lektüre dazu, was im speziellen portabel/nicht portabel unter c++ ist, oder sind das die unveröffentlichen Erfahrungen des einzelnen im Umgang mit Betriebssystemen?)<br />
Eine der vielen Erkenntnisse, die ich bei diesen Megatests als Anfänger machen konnte, ist eine 20-25 % schnellere Schleife bei Zuweisungen im höherstelligen Bereich, z.b. für grosse arrays:</p>
<pre><code class="language-cpp">int MAX = 40000000;
int i   = 0;
unsigned long* harray = new unsigned long[MAX];
int counter = MAX;
for(;--counter;)
    harray[counter] = 0xFFFFFFFF;
//is flotter als
counter = 0;
for(;counter&lt;MAX;++counter)
   harray[i] = 0xFFFFFFFF;
</code></pre>
<p>Aber das is ja eh sicher compilerabhängig, nich portabel und wenn nicht, dann habt ihrs eh schon alle gewusst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
<p>cu Chris</p>
</blockquote>
<p>Für die höheren Weihen der Microoptimierung wandelst du noch die Schleife um, so dass das Array in Vorwärtsrichtung durchlaufen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329429</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 20 Jul 2007 17:57:16 GMT</pubDate></item><item><title><![CDATA[Reply to hinter den kulissen, keywords on Fri, 20 Jul 2007 18:40:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for(;--counter;)
</code></pre>
<p>ist cool. Andere würde dann doch glatt</p>
<pre><code class="language-cpp">while(--counter)
</code></pre>
<p>schreiben.</p>
<p>Die Frage ist jetzt, wo ist da irgendwas nicht portables bei?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329451</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Fri, 20 Jul 2007 18:40:55 GMT</pubDate></item></channel></rss>