Übersetzen des AVR-Assembly-Quellcodes vom Atmels-Assembler zum IAR-Assembler Aktualisiert: 2004-02-24 IPEO Archived: Revision: 6763 Einleitung Die beiden am häufigsten verwendeten Assemblierer für Atmels AVR-Architektur sind Atmels eigener Assembler und der IAR Assembler. Viele Anwendungshinweise sowie andere Software wurden für den Einsatz mit Atmels Assembler geschrieben. Wenn der Quellcode in Objektdateien zusammengefasst und mit anderen Objektdateien verknüpft wird, die beispielsweise von IAR Systems C und EC Compilern erzeugt werden, müssen diese entsprechend der IAR Systems-Syntax übersetzt werden. Dieses Dokument beschreibt die Übersetzung des Quellcodes. Haftungsausschluss Es liegt in Ihrer Verantwortung sicherzustellen, dass die Übersetzung korrekt ist. IAR Systems übernimmt keine Garantie für die Richtigkeit. Dieses Tool ist als Hilfe im ersten Schritt eines Übersetzungsprozesses gedacht. Das Atmel2iar-Assembler-Übersetzerprogramm Atmel2iar läuft unter Windows 95/98/2000 und Windows NT 4.0. Geben Sie Folgendes ein, um das Programm über die Befehlszeile auszuführen: gtAtmel2iar. exe Pr. asm - d conversion. log Atmel to IAR assembler translator, V1.XX Copyright 2000 IAR Systems. Alle Rechte vorbehalten. Die folgenden Dateien werden verarbeitet: Datei Prec. asm erfolgreich. Datei Proc. asm erfolgreich. 2 erfolgreiche Datei (en): Prec. asm Proc. asm Die Quelldateien, die auf der Befehlszeile vor dem obigen Beispiel angegeben werden, sind Assembler-Assembler für Assembler für Assemblersprache. Platzhalter können verwendet werden, um Quelldateien auszuwählen. Der Betrieb des Programms Atmel2iar. exe ist in 6 Etappen unterteilt. Die Eingabedateien werden nacheinander durch alle angegebenen Stufen behandelt. Diese Stufen können separat mit Optionen gesteuert werden. Wenn eine Stufe ausfällt, werden die folgenden Stufen für die aktuelle Eingabedatei übersprungen. Die Stufen 1, 3, 4, 5 und 6 werden zum Verifizieren der Eingabe und Ausgabe von der Übersetzung verwendet. Die wirkliche Übersetzung erfolgt während der Stufe 2. Vergleich von ROM-Dateien für CODE und EEPROM, die von den Tools von Atmels und IAR Systems produziert werden. Die Stufen 1, 3, 4 und 5 verwenden externe Programme, wenn sie ihre Aufgaben erfüllen. IAR Postlink wird zusammen mit dem Assembler-Übersetzungsprogramm bereitgestellt, aber die anderen ausführbaren Dateien müssen von Ihnen bereitgestellt werden. Verwenden Sie die Befehlszeilenoption - t, um den Namen der ausführbaren Datei für die verschiedenen Stufen zu ändern. Atmels Assembler, der IAR Assembler und der IAR XLINK Linker sind im Internet kostenlos erhältlich, zum Beispiel von Atmels, atmel. Atmels assembler, avrasm32.exe, ist in AVR Studio 3.2 enthalten. Der IAR XLINK Linker ist Bestandteil des IAR Assembler-Pakets. Der IAR Assembler für AVR ist auch auf der IAR Systems Website erhältlich. Standardbehandlung von Dateitypen, (ist beliebiges Zeichen):.inc,.h..ich. Werden als Include-Dateien behandelt. Diese Dateitypen werden standardmäßig nicht von den Stufen 4, 5 und 6 verarbeitet..asminc werden als Atmel-Include-Dateien behandelt. Diese Dateitypen werden standardmäßig nicht von den Stufen 1, 3, 4, 5 und 6 verarbeitet. Andere Dateitypen werden als Assembler-Hauptquelle behandelt. Sie werden von allen Stufen bearbeitet. Beginnen Sie mit der Übersetzung aller. asm-Dateien. Alle enthaltenen Dateien werden auch übersetzt (sofern nicht die Kommandozeilenoption - x verwendet wird). Befehlszeilenoptionen in alphabetischer Reihenfolge Geben Sie für jede Stufe eine Ziffer an (keine alle Stufen). Zum Beispiel - v23 setzt ausführlich für die Stufen 2 und 3. - v setzt ausführlich für alle Stufen. Geben Sie die ausführbare Datei einmal für jede Stufe mit einem Gleichheitszeichen nach der Bühnenziffer an. Sie können eine ausführbare Datei für die Stufen 1, 3, 4 und 5 angeben. Beispiel: - t1avrasm32.exe - t3 ../ aavr. exe Alle 3 Segmente sind absolut. ORG wird zur Angabe der absoluten Adresse verwendet. Code und EEPROM startet standardmäßig bei 0, während Data bei 0x60 beginnt. Segmente können absolut (ASEG) oder relocatable (RSEG) sein. Alle absoluten Segmente haben den Segmenttyp UNTYPED, der sich im gleichen Adressraum wie CODE befindet. Es können beliebig viele verschiebbare Segmente verwendet werden. Jedes verlagerbare Segment hat einen Namen, einen Segmenttyp und optional weitere Eigenschaften. Der Linker bestimmt, an welcher Adresse jedes Segment verknüpft ist. ORG wird verwendet, um eine absolute Adresse in absoluten Segmenten anzugeben, und eine Adresse, die relativ zum Anfang des Segmentteils ist, wenn sie in verschiebbaren Segmenten verwendet wird. Eine optionale. DEVICE-Direktive kann verwendet werden, um den Assembler anzuweisen, zu warnen, wenn nicht unterstützte Anweisungen verwendet werden oder wenn die Segmente größer sind als das, was vom Gerät unterstützt wird. Prozessoroptionen und die Option - enhancedCore können optional in der Befehlszeile angegeben werden. Es werden eine Reihe von Linker-Befehlsdateien (.xcl) bereitgestellt, die typische Speicherkonfigurationen für die Geräte definieren. Folgende separate Namensräume werden verwendet: Etiketten, einschließlich. EQU-Symbole und. SET-Symbole Register-Aliase (.DEF) Makronamen (.MACRO) Reservierte Wörter, einschließlich Anweisungs-, Funktions - und Registernamen Der gleiche Name kann in allen verwendet werden Die Namensräume, die verwirrend aussehen können. Der Assembler entscheidet, welchen Namensraum ein Name gehört, indem er den Kontext analysiert. Der gleiche Namensraum wird für alle Symbole verwendet. Der gleiche Name darf nicht für zwei verschiedene Zwecke verwendet werden. Makros können null oder mehr unbenannte Parameter haben. Direktiven sind nicht zulässig in Makros, außer in älteren Versionen des Assembler. Makros können unbenannte Parameter oder benannte Parameter haben. Es gibt eine Reihe von zusätzlichen Features. Beachten Sie, dass String-Literale, die doppelte Anführungszeichen im Quellcode für den Atmels-Assembler verwenden, in einfache Anführungszeichen übersetzt werden, um die zusätzliche Null zu vermeiden, die der IAR-Assembler an doppelte Anführungszeichenfolgenliterale anfügt. Die Richtlinien. DSEG und. ESEG müssen in RSEG-Direktiven übersetzt werden, um sie in die richtigen Adressräume zu stellen. CSEG kann in eine RSEG-Direktive oder eine ASEG-Direktive übersetzt werden, da CODE und UNTYPED sich im gleichen Adressraum befinden. RSEG wird empfohlen, da es viel einfacher ist, den Quellcode in mehrere Module aufzuteilen, wenn RSEG verwendet wird. Die ORG-Richtlinie legt eine absolute Adresse fest. Es kann zu einem relativen ORG übersetzt werden, da die Startadresse jedes Segmentteils bekannt ist. Solange der gesamte übersetzte Code im selben Modul gehalten wird und die Segmente mit den erwarteten Adressen verknüpft sind, funktioniert diese Strategie. Wenn jedoch der Quellcode in mehrere Module aufgeteilt wird, kann das Segmentteil an einer anderen Adresse als erwartet starten und die ORG-Direktive setzt den Ortszähler auf den falschen Wert. Die beste Lösung ist, alle ORG-Richtlinien zu eliminieren und stattdessen ein neues Segment zu starten. Die Startadresse des neuen Segments wird in der Linker-Befehlsdatei definiert. (Ein Segmentteil ist der Teil eines Segments, das sich im aktuellen Modul befindet Wenn nur ein Modul verwendet wird, ist das Segmentteil dasselbe wie das Segment, zB wird das Segment ADATA mit 0x60 verknüpft, dann wird das ORG 0x20 gesetzt Adresszähler auf 0x80.Wenn jedoch andere Teile von ADATA in anderen Modulen vorhanden sind, können sie vorher verknüpft werden, wodurch das Segmentteil mit einer höheren Adresse als 0x60 gestartet wird). Manchmal werden ORG-Direktiven verwendet, wenn Interrupt-Vektoren definiert werden. In diesem Fall wird ein COMMON INTVEC Segment empfohlen. ASEG ist auch eine Alternative. Beispiel für die Handhabung von Segmenten und Adressen: CSEG Code addr 0 DSEG Daten addr 0x60 ORG 0x80 Daten addr 0x80 ESEG EEPROM addr 0 ORG 0x10 EEPROM addr 0x10 st: RJMP f Code-Byte addr 2 ORG 0x100 Code-Byte addr 0x200 RSEG ACODE: CODE Code Addr 0 RSEG ADATA: DATEN Daten addr 0x60 ORG (0x80) -0x60 Daten addr 0x80 RSEG AEEPROM: XDATA EEPROM addr 0 ORG 0x10 EEPROM addr 0x10 st: RJMP f Code-Byte addr 2 ORG (0x100) 2 Code-Byte addr 0x200 Namensräume Die Müssen vier Namensräume im Atmels-Assembler zu einem kombiniert werden, ohne Namenskonflikte einzuführen. Der Assembler-Übersetzer benachrichtigt den Benutzer über alle potenziellen Namenskonflikte. Die Namenskonfliktprüfung ist nicht zwischen Groß - und Kleinschreibung unterschieden und enthält die Kontrolle über reservierte IAR-Assembler-Wörter. Sie müssen die Namen manuell ändern, um die Konflikte zu lösen. Dies geschieht vorzugsweise in den Quelldateien der Atmel-Baugruppe. Leitlinien Beispiele, wie die Richtlinien behandelt werden: Das ist etwas, das ich auch ärgerlich finde - ok du kannst es in deinem Kopf für 8 Bit aber auf Sachen wie ARM tun, 32 Bits bekommt ein wenig schwerer in deinem Kopf zu tun, weil du deinen Platz verloren hast . Nicht unterstützt binäre auf einem Embedded-orientierten Compiler ist die Einhaltung strenger Standards Compliance zu weit. ALLE eingebetteten Compiler haben nicht standardmäßige Erweiterungen, um mit der Hardware fertig zu werden, so dass ein anderer keine große Sache ist. Es wäre nicht ein großes Problem für die Portabilität - in den sehr seltenen Fällen eine App auf einen anderen Compiler portiert wird, können binäre Konstanten leicht manuell durchsucht werden Verstärker ersetzt mit Hex mit minimalen Wahrscheinlichkeit der Einführung von Fehlern oder unerwarteten Nebenwirkungen. Mit allen Mitteln machen sie eine optionale Funktion, die aktiviert / deaktiviert werden kann für diejenigen, die strikte Einhaltung wollen, aber das Auslassen einer solchen nützlichen Funktion ist unentschuldbar, zumal es wäre sehr einfach zu implementieren - es könnte im Preprocessor (Umwandlung in verhexen). So dass eine Code-Änderung könnte alle ihre Compiler. Level: Raving Lunatic Dabei seit: Do., 29. Nov 2007 Geschrieben von ArnoldB. Heiraten. Mar 26, 2008 - 11:36 PM BenG hat geschrieben: Ein kleiner Bugbear von mir. Gibt es eine Möglichkeit, schnell eine Binärzahl in IAR eingeben. Z. B. In einigen Compilern konnte ich schreiben: Wo wie in IAR kann ich nur Zahlen in Hex oder Dezimal. Nicht in der Lage, dies zu tun ist kein großes Problem - aber wenn Im Schreiben eines kleinen Testabschnitt, kann es soemtimes nützlich sein, zu tun. Zuerst ist es viel besser, symbolische Konstanten zu verwenden oder zu definieren, um Zahlen zu erstellen, nicht rohe Hex - oder Binärwerte. Aber wenn Sie wirklich gerne binäre Konstanten verwenden, erstellen Sie sich eine Header-Datei mit dem folgenden Inhalt: Fügen Sie den Header, wo Sie die Bxxxxxxx-Konstanten verwenden möchten. Das ist hässlich, aber tragbar. PS: Ich würde uns ein Skript, um solch einen Header zu erzeugen, anstatt es von Hand zu schreiben :-) Mikeharrison hat geschrieben: Das ist etwas, das ich auch ärgerlich finde - ok, man kann es im Kopf für 8 Bit aber auf Sachen wie ARM, 32 machen Bits wird ein wenig schwerer zu tun, in Ihrem Kopf durch den Verlust Ihres Platzes. Und Sie erwarten, halten Sie Ihren Platz irgendwo in der Mitte von 32 1s und 0s Wenn Sie mich fragen, sind Sie weit eher gehen, um einen Fehler zu definieren einen Wert in binärer als Sie sind in Hex, vor allem, wie die Bittiefe erhöht. Mikeharrison hat geschrieben: Nicht unterstützt binäre auf einem Embedded-orientierten Compiler ist die Einhaltung strenger Standards Compliance zu weit. ALLE eingebetteten Compiler haben nicht standardmäßige Erweiterungen, um mit der Hardware fertig zu werden, so dass ein anderer keine große Sache ist. Sein eine Sache, Erweiterungen hinzuzufügen, um Hardware zu stützen, sein anderes, um die Sprache selbst zu ändern. Sie auch Zähler youre eigenen Argument mit: Mikeharrison schrieb: binäre Konstanten können leicht manuell durchsucht werden Verstärker mit Hex mit minimalen Chance der Einführung von Fehlern oder unerwarteten Nebenwirkungen gesucht. So, wenn theres minimale Wahrscheinlichkeit des Irrtums in der Umwandlung, warum nicht einfach es in Hexe von Anfang an Mikeharrison schrieb: Mit allen Mitteln machen es eine optionale Funktion, die aktiviert / deaktiviert werden kann für diejenigen, die strikte Einhaltung wollen, aber weglassen eine solche nützliche Funktion Ist unentschuldbar, vor allem, da es sehr einfach zu implementieren wäre Während es sein könnte schön zu haben, Id kaum sagen, eine solche Unterlassung ist unentschuldbar. Schreiben Sie auf jeden Fall Ihren Compiler-Hersteller und beschweren sich. Ehrlich gesagt für diejenigen RARE-Gelegenheiten, wo ich möchte einen Wert in binären (Bitmaps) zu definieren, verwende ich einfach ein Pre-Prozessor-Makro, es zu tun. Ich selten verwenden rohe Werte, sei es binär oder hex. Nach meiner Erfahrung ist es immer besser, benannte Werte bei der Arbeit mit Bitfeldern verwendet. Sie sind viel leichter zu lesen als eine Reihe von 0s und 1s oder sogar ein Hex-Wert. Die eine Stelle, wo binäre ist von Vorteil, ist mit Bitmap Daten, wo Sie das Bild in den Daten sehen können. Für diese Gelegenheiten verwende ich Makros ähnlich denen, die oben geschrieben. Die Makros haben den zusätzlichen Vorteil, daß ich die Bitreihenfolge ändern kann, während das visuelle Muster leichter zu sehen ist. Schreiben von Code ist wie Sex zu haben. Machen einen kleinen Fehler, und youre Unterstützung für das Leben. Ich vermute, dass, wenn Sie bis 10 zählen können, dann mit Bit-Gewichtung, Dezimalstellen kommen etwas natürlich. Also, wenn Sie die Bitmuster für 0 bis 9 vernünftig begründen können, haben Sie wirklich nur 6-Bit-Muster zu merken - Hex Ziffern A bis F. Mein Verständnis ist, dass Hexadezimal erstellt wurde, um Fehler bei der Interpretation einzelner Bitpositionsfehler zu beseitigen - genauso wie Glitch hat impliziert. Ist viel einfacher zu lesen und rechts zu bekommen Es gibt eine Art von Fehler, denken, dass rohe binäre ist irgendwie einfacher zu lesen, dann Hexadezimal. Und in dem gleichen Licht, können wir über ASCII vergessen und verwenden Sie nur binäre Bitmuster. Lass uns nur in binären Bitmustern in Zeitungen, Büchern, Briefen und allem, was den ASCII-Zeichensatz verwendet, kommunizieren. Wenn rohe binäre war die einfachere der beiden, youd Blick auf sie in so ziemlich alle Mikro-Controller OP-CODE Beschreibung der Mnemonik. Also darüber nachdenken. Wenn Sie den Widerstand-Farbcode täglich verwenden, wird die Beziehung zwischen den Ziffern 0 bis 9 und den zehn Farbbandzuweisungen zweiter Art. Das gleiche gilt für Hexadezimal. Ich würde denken, dass jemand mit Assembler, C oder sogar möglicherweise BASIC in Verbindung mit einem Embedded Controller, Hexadezimal wäre einfach eine zweite Natur. Das gleiche gilt auch für die Octal-Radix - und die ASCII-Zeichencodes. Oder ist es einfach, dass wir nicht die Disziplin haben, über jene primitiven Aspekte des Feldes hinauszugehen, die wir am meisten kennen - unsere Komfortzone Sie können die Realität für eine Weile vermeiden. Aber Sie können nicht vermeiden, die Folgen der Realität - C. W. Livingston Ill über oktale zustimmen. Octal wurde aus der Geschwindigkeit der Eingabe von Werten mit einem Standard 10-stellige Ziffernblock geboren. Es ist mehr eng mit der binären es repräsentiert als Dezimalpunkt, so dass es ein großer Kompromiss. Sie ist heute meist noch aus historischen Gründen im Einsatz. Angesichts der Auswahlmöglichkeiten für die Eingabe von Bit-Werte meine Präferenzen Reihenfolge wie folgt: hex binary octal decimal Insgesamt bin ich überrascht die binäre, und die dezimalen, radix Präfixe werent in der C-Sprache Spezifikation enthalten. (Ja das Dezimalpräfix wäre redundant, würde es aber gerne für Vollständigkeit sehen) Im nicht groß auf einer nackten Null als Präfix für Oktal entweder, zu leicht für einen Dezimalwert mit einer führenden Null verwirrt . Machen einen kleinen Fehler, und youre Unterstützung für das Leben. Level: Raving Lunatic Dabei seit: Do., Apr 1, 2004 Ort: New Mexico Geschrieben von kmr. Thu 27. März 2008 - 05:26 cpluscon hat folgendes geschrieben: Code writers like options. Tun sie. Sie mögen auch die Beweglichkeit, die folgende Standards zur Verfügung stellen. Der Kompromiss ist oft idiosynkratisch. Ich denke, IAR würde eine Feature-Anfrage für diese Erweiterung. Ich persönlich bevorzuge Hex-Notation, so würde ich nicht so eine Anfrage. Level: Raving Lunatic Dabei seit: Sa. Jan 12, 2002 Geschrieben von glitch. Thu Mar 27, 2008 - 02:52 PM Und Kranke schneide gerade die nächste Antwort weg am Pass hier. Aber wenn C-Programmierer wie Portabilität, was über all jene Erweiterungen, um die Hardware / Architektur zu unterstützen Die Architektur und Hardware-spezifischen Code kann oft weg abstrahiert werden, so dass alles, was zu tun ist, schreiben eine neue HAL (Hardware Abstraktion Schicht) beim Umzug in ein Unterschiedliche Plattform. Dies ist nicht einfach, wenn Ihr Code mit nicht-Standard-Konstante Notation verstreut ist. (Weshalb ich früher gesagt habe, dass Spracherweiterungen und Erweiterungen für Hardware unterschiedlich sind) Schreiben Code ist wie Sex zu haben. Machen einen kleinen Fehler, und youre Unterstützung für das Leben. Level: Raving Lunatic Dabei seit: Do., Apr 1, 2004 Ort: New Mexico Geschrieben von kmr. Thu Mar 27, 2008 - 03:10 PM Guter Punkt, Glitch. Offensichtlich, wie AVR-Programmierer verwenden wir routinemäßig Erweiterungen auf C. Ich denke, ein wichtiges Thema bei der Entscheidung, wann eine Spracherweiterung verwendet werden, ist, wie viel kostet man von der Verwendung der Erweiterung gegenüber, wie viel man aus Mangel an Portabilität verliert. Level: Raving Lunatic Dabei seit: Fr. 20.12.2002 Ort: Dresden, Deutschland Geschrieben von dl8dtl. Thu 27. März 2008 - 15:18 Uhr. - es könnte im Präprozessor erfolgen (Umwandlung in Hex). So dass eine Code-Änderung könnte alle ihre Compiler. Also, wie viel Compiler-Code haben Sie bereits berührt Wie viel der C-Standard und seine zugrunde liegenden Konzepte haben Sie so weit gelesen Get me right, hackte ich die GCC binäre Konstanten Umsetzung, und schließlich schob es durch alle Instanzen der GCC-Entwicklung, die erforderlich waren Um es in den offiziellen Baum dort enthalten. Ich verwende selten dieses Merkmal selbst, ich schrieb es hauptsächlich, da es sich einmal herausstellte, ein häufig angefragtes Element zu sein, und so etwas wie ein Verkaufsargument, und es sah einfach genug aus, um hinzuzufügen. (Meine letzte Motivation war eine dumme Bemerkung in der C99-Begründung, die behauptete, dass sie aus dem Standard aufgrund mangelnder Anwendung und Präzedenz zurückgelassen worden war - so jetzt, endlich gibt es Vorrang, wenn sie es das nächste Mal betrachten.) Was Sie Schrieb oben ist völliger Quatsch. Das bedeutet nicht, ich würde nicht wollen, zu motivieren IAR, um es hinzuzufügen, und wie mein Fall beweist, seine wirklich nicht zu schwer, es hinzuzufügen, aber wenn Sie nicht wissen, auch die grundlegenden Details, wie die Sprache funktioniert, besser vermeiden, diese Art von Bemerkungen . Bitte senden Sie mir keine PMs, verwenden Sie E-Mail, wenn Sie mich persönlich erreichen wollen. Level: 10k Briefträger Beigetreten: Sa. Feb 12, 2005 Ort: Wormshill, England Geschrieben von david. prentice. Thu Es ist einfach, ein Sed-Skript zu schreiben, um Ihre binären Konstanten zu konvertieren. Da IAR aus einem Makefile gefahren werden kann, schreiben Sie einfach Ihren Quellcode mit der Erweiterung. wierd. Dann fügen Sie eine Regel für make, um aus. wierd zu. c mit Ihrem Skript zu übersetzen. Make baut Ihr Projekt. Sie erfüllen Ihre persönlichen Wünsche. Die C-Sprache ist unverändert. Wenn Sie Ihre C-Code in die Außenwelt zu veröffentlichen, haben Sie die rechtlichen C bereits vorverarbeitet. Dieses besondere Beispiel ist ziemlich trivial. Jedoch denke ich, dass diese Technik nützlich ist, um unangenehme Syntaxunterschiede für Assemblierer zu verpacken / zu verbergen. Mikeharrison Dabei seit: Do. Jul 26, 2001 Geschrieben von Mikeharrison. Fr. Das ist etwas, das ich ärgerlich zu finden - OK, Sie können es in Ihrem Kopf für 8-Bit tun, aber auf Dinge wie ARM, 32 Bits wird ein wenig schwerer zu tun, in Ihrem Kopf durch Verlieren Sie Ihren Platz. Und Sie erwarten, halten Sie Ihren Platz irgendwo in der Mitte von 32 1s und 0s Wenn Sie mich fragen, sind Sie weit eher gehen, um einen Fehler zu definieren einen Wert in binärer als Sie sind in Hex, vor allem, wie die Bittiefe erhöht. Ein konkretes Beispiel. Einstellung der IO-Portwerte auf ARM. Schauen Sie sich schematische und geben Sie jedes Bit wiederum von 31 bis 0. Masking-Typ Operationen sind auch ein Anlass, wo binäre kann ein natürlicheres Eingabeformat. Mikeharrison hat geschrieben: Nicht unterstützt binäre auf einem Embedded-orientierten Compiler ist die Einhaltung strenger Standards Compliance zu weit. ALLE eingebetteten Compiler haben nicht standardmäßige Erweiterungen, um mit der Hardware fertig zu werden, so dass ein anderer keine große Sache ist. Quote: Seine eine Sache, um Erweiterungen hinzufügen, um Hardware zu unterstützen, seine andere, die Sprache selbst zu ändern. Ich sehe keinen Unterschied. Durch das gleiche Argument youd Begrenzung der Erweiterungen auf das absolute Minimum notwendig, anstatt das nützlichste / praktisch. Devtools sind da, um Ihnen zu helfen, einen Job so effizient wie möglich zu machen, und wo dies mit der Einhaltung von Standards widerspricht, sollte der Benutzer die Wahl haben, die für das, was sie erreichen wollen, wichtiger ist. Zitat: Sie auch Zähler Youre eigenen Argument mit: Mikeharrison schrieb: binäre Konstanten können leicht manuell durchsucht werden Verstärker ersetzt mit Hex mit minimalen Wahrscheinlichkeit der Einführung von Fehlern oder unerwarteten Nebenwirkungen. So, wenn theres minimale Wahrscheinlichkeit des Irrtums beim Umwandeln, warum nicht gerade es in Hexe von Anfang an, weil die Zahl von Zeiten, die Sie Konstanten im neuen Code eintragen, ist beträchtlich höher als die Zahl, die youd Notwendigkeit, sie an den seltenen Gelegenheiten umzuwandeln, wenn Sie Müssen Port-Code. Der meiste Code wird nie portiert. Mein Punkt war, dass Verschieben von Code aus einem Compiler, der binäre Konstanten unterstützt, um eine thet doesnt ist eine ziemlich triviale Aufgabe. Bobgardner hat geschrieben: Und wenn mein Compiler didnt haben, und ich darum gebeten, ich wette, der Compiler-Kerl würde eine neue Version in ein paar Tage haben. Sehen Sie, wenn die teuren Jungs Turnaround so. Ich auch, habe die Leute bei ImageCraft sehr auf individuelle Anfrage reagiert. Und während die professionellen Programmierer C ICCAVR Begrenzung in Bereichen finden könnte, habe ich keine besonderen Einschränkungen in meinem persönlichen Gebrauch gefunden. ImageCraft ist ein sehr guter Kompromiss zwischen den freien und den teuren C-Compilern. Aber es gibt nichts falsch mit kostenlos, vor allem für die finanziell geschnallt. Und es gibt auch nichts falsch mit teuer, für diejenigen, die die hohen Kosten leisten können. Aber für die 350.00US Advanced Version des ImageCraft ICCAVR C Compilers, bekomme ich jeden Cent wert. Sie können die Realität zu vermeiden, für eine Weile. Aber du kannst die Konsequenzen der Realität nicht vermeiden - C. W. Livingston Level: Raving Lunatic Dabei seit: Sa. Jan 12, 2002 Geschrieben von glitch. Fr. Das ist etwas, das ich ärgerlich zu finden - OK, Sie können es tun, in Ihrem Kopf für 8-Bit, aber auf Dinge wie ARM, 32 Bits wird ein wenig schwerer zu tun, in Ihrem Kopf durch Verlieren Sie Ihren Platz. Und Sie erwarten, halten Sie Ihren Platz irgendwo in der Mitte von 32 1s und 0s Wenn Sie mich fragen, sind Sie weit eher gehen, um einen Fehler zu definieren einen Wert in binärer als Sie sind in Hex, vor allem, wie die Bittiefe erhöht. Ein konkretes Beispiel. Einstellung der IO-Portwerte auf ARM. Schauen Sie sich schematische und geben Sie jedes Bit wiederum von 31 bis 0. Masking-Typ Operationen sind auch ein Anlass, wo binäre kann ein natürlicheres Eingabeformat. Besser zu symbolischen Namen für die Bits, so dass der Code besser lesbar und weniger fehleranfällig ist. Dies ermöglicht auch, daß die Bits leicht geändert werden können, wenn der Schaltplan jemals geändert würde. Schreiben von Code ist wie Sex zu haben. Machen einen kleinen Fehler, und youre Unterstützung für das Leben. Mitglied seit: Jul 18, 2005 Ort: (mit avr-gcc in) Finchingfield, Essex, England Geschrieben von clawson. Fr. März 28, 2008 - 06:34 PM Auch erlaubt einfacher Portierung zu einem anderen Familien-Prozessor, in dem die Bits werden in einem Register nachbestellt Level: Raving Lunatic Beitritt: Thu. Mar 1, 2001 Ort: Rocky Mountains Geschrieben von EW. Fr. Sie wissen, wenn Sie die gesamte Zeitaufwand für den Thread kombiniert haben, könnte die OP haben leicht konvertiert die binäre Konstanten Hex Konstanten longhand, in Bleistift, geben Sie es in, kompilieren Sie es, Und debuggen Sie es. ) Diese Datei dokumentiert die Verwendung der GNU-Compiler. Copyright 1988-2016 Free Software Foundation, Inc. Es ist erlaubt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.3 oder einer späteren Version, veröffentlicht von der Free Software Foundation mit den Invarianten Abschnitten, zu kopieren, zu verbreiten und / oder zu modifizieren LdquoFunding Free Softwarerdquo, wobei die Front-Cover-Texte (a) (siehe unten) und die Back-Cover-Texte (b) (siehe unten) sind. Eine Kopie der Lizenz ist im Abschnitt ldquoGNU Free Documentation Licenserdquo enthalten. (A) Der Vorderseitentext der FSFs ist: (b) Der Rückseitentext der FSFs ist: Sie haben die Freiheit, dieses GNU-Handbuch zu kopieren und zu modifizieren, wie die GNU-Software. Die von der Free Software Foundation veröffentlichten Kopien erhöhen die Mittel für die GNU-Entwicklung. Kurzinhalt Inhaltsverzeichnis Einleitung Dieses Handbuch beschreibt die Verwendung der GNU-Compiler sowie deren Funktionen und Inkompatibilitäten sowie die Meldung von Fehlern. Es entspricht dem Compiler (GCC) Version 7.0.0. Die Interna der GNU-Compiler, wie man sie auf neue Ziele portieren kann und einige Informationen darüber, wie man Frontseiten für neue Sprachen schreibt, werden in einem separaten Handbuch dokumentiert. Siehe Einleitung. G und GCC. Sie können C - oder C-Programme kompilieren. Normen. Von GCC unterstützte Sprachstandards. Aufruf von GCC. Befehlsoptionen, die von lsquo gcc rsquo unterstützt werden. C Umsetzung. Wie GCC die ISO C Spezifikation implementiert. C Umsetzung. Wie GCC die ISO C Spezifikation implementiert. C Erweiterungen. GNU-Erweiterungen zur C-Sprachfamilie. C Erweiterungen. GNU-Erweiterungen zur C-Sprache. Ziel c. GNU Objective-C-Laufzeitfunktionen. Kompatibilität. Binäre Kompatibilität Gcov. Gcov --- ein Testabdeckungsprogramm. Gcov-Werkzeug. Gcov-tool --- ein Offline-gcda-Profilbearbeitungsprogramm. Ärger. Wenn Sie Probleme mit der Verwendung von GCC haben. Bugs. Wie, warum und wo Fehler melden. Bedienung. So erhalten Sie Hilfe mit GCC Contributing. Wie kann man zum Testen und Entwickeln von GCC beitragen? Finanzierung. Wie zu helfen, die Finanzierung für kostenlose Software zu gewährleisten. GNU-Projekt. Das GNU-Projekt und GNU / Linux. Kopieren. GNU General Public License sagt, wie Sie GCC kopieren und freigeben können. GNU-Lizenz für freie Dokumentation Wie Sie dieses Handbuch kopieren und teilen können. Mitwirkende. Menschen, die zu GCC beigetragen haben. Optionsindex. Index für Befehlszeilenoptionen. Schlüsselwortindex. Index der Begriffe und Symbolnamen.
No comments:
Post a Comment