<?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[Hardwarenah]]></title><description><![CDATA[<p>Hallo.</p>
<p>Bin gerade C++ am Lernen. Man liest immer wieder es sei nicht möglich Hardwarenah zu programmieren mit C++, bzw. Objektorientiertes Programmieren ist nicht geeignet dafür weil nicht effektiv genug (Geschwindigkeit). Ich weiß das es noch zu früh ist für mich als Anfänger sich über so etwas Gedanken zu machen. Doch mich interessiert es einfach nur.<br />
Treiber werden, soweit ich weiß, in C + Inlineassembler geschrieben wegen der Schnelligkeit.</p>
<p>Ist an der Aussage, C++ ist weniger geeignet, etwas dran?<br />
Ist es die Objektorientierung oder liegt das einfach nur am Grunddesign der Sprache?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175118/hardwarenah</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 03:13:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175118.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Mar 2007 11:19:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hardwarenah on Wed, 07 Mar 2007 11:19:51 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Bin gerade C++ am Lernen. Man liest immer wieder es sei nicht möglich Hardwarenah zu programmieren mit C++, bzw. Objektorientiertes Programmieren ist nicht geeignet dafür weil nicht effektiv genug (Geschwindigkeit). Ich weiß das es noch zu früh ist für mich als Anfänger sich über so etwas Gedanken zu machen. Doch mich interessiert es einfach nur.<br />
Treiber werden, soweit ich weiß, in C + Inlineassembler geschrieben wegen der Schnelligkeit.</p>
<p>Ist an der Aussage, C++ ist weniger geeignet, etwas dran?<br />
Ist es die Objektorientierung oder liegt das einfach nur am Grunddesign der Sprache?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1240848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240848</guid><dc:creator><![CDATA[MisterWong]]></dc:creator><pubDate>Wed, 07 Mar 2007 11:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to Hardwarenah on Wed, 07 Mar 2007 15:28:32 GMT]]></title><description><![CDATA[<p>MisterWong schrieb:</p>
<blockquote>
<p>Ist an der Aussage, C++ ist weniger geeignet, etwas dran?</p>
</blockquote>
<p>nein. die aussage ist kompletter unfug.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1241046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241046</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 07 Mar 2007 15:28:32 GMT</pubDate></item><item><title><![CDATA[Reply to Hardwarenah on Wed, 07 Mar 2007 15:56:56 GMT]]></title><description><![CDATA[<p>Einige Sprachkonstrukte von C++ bedeuten etwas mehr Rechenzeit. (z.B. Laufzeitpolymorphie, Exceptions).<br />
In extrem performancekritischen Codeabschnitten ist u.U. zu prüfen, ob darauf verzichtet werden kann.</p>
<p>C++ ist eine Erweiterung von C, d.h. man kann nach wie vor für kritische Codeabschnitte C oder Inline-Assembler verwenden. Daher ist die Aussage C++ sei langsamer als C so nicht wirklich sinnig.</p>
<p>Die Verwendung von Vererbung und virtuellen Funktionen (Objektorientierung) kann den Code jedoch ausbremsen. Dies gilt vor allem innerhalb von for oder while Schleifen, bei denen du sehr viele Daten verarbeiten musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1241077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241077</guid><dc:creator><![CDATA[Die_Gute_Fee]]></dc:creator><pubDate>Wed, 07 Mar 2007 15:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to Hardwarenah on Wed, 07 Mar 2007 22:18:47 GMT]]></title><description><![CDATA[<p>Bei der Treiberprogrammierung hat man eher das Problem dass einem gewisse C++ Features (wie z.B. Exceptions und u.U. sogar RTTI) nicht zur Verfügung stehen, und man sie deshalb nicht verwenden kann.</p>
<p>Auch können Dinge wie Default Ctor, automatisch erzeugter Dtor, Vtable etc. auf manchen Systemem zu Problemem führen wenn der Code in Interrupts genutzt wird -- wenn die der Compiler bzw. Linker in ein &quot;pagable&quot; Segment wirft machts u.U. *boom* wenn der Interrupt darauf zugreifen will.</p>
<p>Wenn man auf solche Dinge aufpasst spricht aber eigentlich nix dagegen C++ auch für low-level Treiber zu verwenden. Und es gibt sogar einige Frameworks z.B. für Windows Treiber die auf C++ aufbauen.</p>
<p>Und inline Assembler wird kaum mehr verwendet -- in den meisten Fällen ist der Compiler besser als selbst gute Programmierer beim Optimieren von Code, bzw. anders gesagt: ein guter Programmierer würde viel zu lange brauchen um den Code so gut zu optimieren. Und bei jeder Änderung müsste er u.U. aufs neue Optimieren - das zahlt sich einfach nicht aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1241324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241324</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 07 Mar 2007 22:18:47 GMT</pubDate></item><item><title><![CDATA[Reply to Hardwarenah on Wed, 07 Mar 2007 22:34:51 GMT]]></title><description><![CDATA[<p>andererseits kann man mit c++ auch sehr gut dinge machen die mit c und assembler nur sehr eingeschraenkt moeglich sind. Z.B. statt code mehrmals zu schreiben, einfach templates verwenden, da gerade bei treibern sicherheit sehr kritisch ist (blue screen, u know ;)), ist es wichtig guten code zu haben und somit moeglichst wenig c&amp;p, was also perfekt fuer templates ist.<br />
zudem kann man schreibinensive dinge mit templates sehr vereinfachen.</p>
<p>z.b. ein treiber fuer eine graphikkarte,<br />
1. du moechtest moeglichst wenig register der graka beschreiben, weil jedes umkonfigurieren zeit kostet, also nur das was sich veraendert hat.<br />
2. du moechtest nich bei jedem parameter vergleichen ob er anders ist als der der gerade aktiv ist, weil du sonst hunderte von vergleichen hast und das auch langsam ist.<br />
3. du moechtest eventuell einen treiber haben der auf linux, windows, apple (mac/c2d) laeuft, also kein assembler/selbstmodifizierender code.</p>
<p>also machst du dir mittels ein paar defines und templates einen riesiegen switch-case bei dem die templates schon zur kompilezeit evaluieren wie sich der gewuenschte status vom momentanem aendert (fuer alle moeglichkeiten) und dann generiert man nur noch den gewuenschten register-schreibe-code.</p>
<p>konkretes beispiel:<br />
alphablend an/aus<br />
alphatest an/auss<br />
zwrite an/aus<br />
ztest an/aus<br />
stencilwrite an/aus<br />
stenciltest an/aus<br />
colorwrite an/aus<br />
backfaceculling an/aus</p>
<p>also 2^8 ausganszustaende und 2^8resultierende, aus diesem switch-case block macht dir der compiler dann ne jumptable mit 65536 eintragen.</p>
<p>das einzige problem ist das bei manchen konstrukten die compiler tod gehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1241330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241330</guid><dc:creator><![CDATA[rapso]]></dc:creator><pubDate>Wed, 07 Mar 2007 22:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to Hardwarenah on Sat, 10 Mar 2007 13:16:03 GMT]]></title><description><![CDATA[<p>Die_Gute_Fee schrieb:</p>
<blockquote>
<p>C++ ist eine Erweiterung von C</p>
</blockquote>
<p>Ist diese aussage nicht blödsinn? Sofern wie ich weiß war C++ früher eine Erweiterung von C, aber seit dem C++98 Standard eine eigenständige sprache. Jedenfalls das der C99 Standard nicht in C++ eingeflossen ist, untermauert die falschheit deiner aussage.</p>
<p>Wäre C++ &quot;nur&quot; eine Erweiterung von C, dann müsste C99 doch auch in C++ eingeflossen sein, gell?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1242830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1242830</guid><dc:creator><![CDATA[amdio]]></dc:creator><pubDate>Sat, 10 Mar 2007 13:16:03 GMT</pubDate></item><item><title><![CDATA[Reply to Hardwarenah on Sun, 11 Mar 2007 03:10:30 GMT]]></title><description><![CDATA[<blockquote>
<p>Ist diese aussage nicht blödsinn? Sofern wie ich weiß war C++ früher eine Erweiterung von C, aber seit dem C++98 Standard eine eigenständige sprache. Jedenfalls das der C99 Standard nicht in C++ eingeflossen ist, untermauert die falschheit deiner aussage.</p>
<p>Wäre C++ &quot;nur&quot; eine Erweiterung von C, dann müsste C99 doch auch in C++ eingeflossen sein, gell?</p>
</blockquote>
<p>Ist diese Aussage nicht Blödsinn?<br />
Wer redet hier von &quot;nur&quot;? Und selbst wenn er davon geredet hätte, bei einer Erweiterung sind Ergänzungen nunmal nicht ausgeschlossen.</p>
<p>Wenn c++ früher mal eine Erweiterung von c++ war, wie kann c++ heute keine Erweiterung mehr sein?<br />
Auch wenn sich c++ bis heute so weit entwickelt hat, dass c++ als eigenständige Sprache betrachtet werden kann, ändert das nichts an c als grundlegenden Unterbau, selbst eventuell vorhandene Ergänzungen bezüglich syntaktischer Regeln ändern nichts daran.</p>
<p>Und was c99 angeht, kenne diesen Standard nicht wirklich, doch die Punkte die ich kenne, sind Anpassungen an c++ Oo</p>
<p>Als Beispiel wären da z.B. die aus c++ bekannten Referenzen, die C++-KOmmentare, verbot des impliziten ints oder überhaupt der Verbot zur Deklaration impliziter Deklarationen und dieser ganze Kram.</p>
<p>Ob man C++ nun als eine Erweiterung von C betrachten will oder nicht ist eine Sache, doch derartig abwegig ist diese Behauptung, als dass man sie einfach als Blödsinn abstempeln könnte, sicherlich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1243179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1243179</guid><dc:creator><![CDATA[Kahino]]></dc:creator><pubDate>Sun, 11 Mar 2007 03:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to Hardwarenah on Sun, 11 Mar 2007 18:41:28 GMT]]></title><description><![CDATA[<p>was sagt &quot;Der Pate&quot; Volkard dazu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1243544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1243544</guid><dc:creator><![CDATA[mido]]></dc:creator><pubDate>Sun, 11 Mar 2007 18:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to Hardwarenah on Sun, 11 Mar 2007 19:02:29 GMT]]></title><description><![CDATA[<p>C++ kann man nicht mehr als Erweiterung von C sehen. Eher eine Abspaltung. Das ändert aber nichts an der prinzipiellen Richtigkeit der Aussage, daß man keine wuchtigen Sprachmittel benutzen muß, sondern jederzeit in C++ auch darauf verzichten kann, wodurch der C++-Code dann größtenteils sogar von einem C-Compiler geschluckt werden würde.</p>
<p>Die Sachen, die Embedded-Programmierer wirklich erschrecken können, laufen zum Beispiel so ab:</p>
<p>man hat zwei structs mit dazugehörigen funktionen. alles ok. dann bastelt man die um in klassen. alles ok. das compilat wird sogar ein paar bytes kleiner. man macht auch ein paar virtuelle funktionen. auch ok, eine verzweigung je nach typ war notwendig und ob man das jetzt per hand macht, oder virtual benutzt, ist fast egal. das compilat ist noch fein klein. oh, der dtor sollte aber auch virtuell sein. kein prob. und sollte die eine funktion nicht pur virtuell sein? das mach auch auch mal. uih, riesenanschiss vom chef gekriegt, warum ich so bescheuert sei, c++ zu nehmen. compilat hat 280000 bytes statt der 2500 bytes von vorgestern. lag am dummen =0. der compiler hat ne geheime funktion reingefummelt (ein paar bytes dazu), die aufgerufen wird, wenn ich so bescheuert bin, durch wildes gecaste oder aufruf im ctor eine pur virtuelle funktion aufzurufen. die wiederum schmeißt eine exception (exceptionhandling dazu mit 23000 bytes), die fliegt durch bis zu ner funktion, die das programm terminiert. und diese funktion wiederum gibt was nach cerr aus (iostream dazu mit 250000 bytes). was so ein kleines =0 doch ausmachen kann. naja, jetzt hat der chef verboten, jemals wieder c++ zu nehmen und erzählt überall, wie viel besser c doch für embedded systems ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1243557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1243557</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 11 Mar 2007 19:02:29 GMT</pubDate></item></channel></rss>