D — Änderungen 5052 → 5166

Zeile 1: Zeile 1:
 
{{Vorlage:Sprache
 
{{Vorlage:Sprache
 
|Name = D
 
|Name = D
−
|Inlineassembler = Ja (Intel-Syntax)
+
|[[Assembler | Inlineassembler]] = Ja (Intel-Syntax)
 
|Compiler = dmd (Digital Mars), gdc (GNU)
 
|Compiler = dmd (Digital Mars), gdc (GNU)
 
|Plattformen = Alle
 
|Plattformen = Alle
Zeile 7: Zeile 7:
 
|Homepage = http://www.digitalmars.com/d
 
|Homepage = http://www.digitalmars.com/d
 
}}  
 
}}  
−
D ist eine prozedurale sowie objekorientierte Programmiersprache und wird seit 1999 von Walter Bright entwickelt. Primäres Ziel der Entwicklung war dabei die Produktivität von Scriptsprachen wie Python mit der Abstraktion von C++ und der Nähe zum System von C zu vereinen.
+
D ist eine prozedurale sowie objekorientierte [[Kategorie:Programmiersprache | Programmiersprache]] und wird seit 1999 von Walter Bright entwickelt. Primäres Ziel der Entwicklung war dabei die Produktivität von Scriptsprachen wie Python mit der Abstraktion von [[C++]] und der Nähe zum System von [[C]] zu vereinen.
  
−
== D als Sprache für ein Betriebssystem ==
+
== D als Sprache für ein [[Betriebssystem]] ==
−
D kann primär als objektorientiertes C (ähnlich C++) gesehen werden. Mit D lässt sich genauso wie in C sehr system-nah programmieren, es sind Sprachmittel wie Pointer vorhanden und man kann per Inline-Assembler (Intel-Syntax) Assembler-Routinen einbauen. Einzig muss (z.B. für den Kernel) ein kleines Runtime implementiert werden, welcher Funktionen zum Überprüfen von Werten während der Laufzeit zur Verfügung stellt (mehr dazu weiter unten). Um Sprachmittel wie Konstruktoren und Desktruktoren einzusetzen, bedarf es ebenfalls Kompatibillitätscode.
+
D kann primär als objektorientiertes C (ähnlich C++) gesehen werden. Mit D lässt sich genauso wie in C sehr system-nah programmieren, es sind Sprachmittel wie Pointer vorhanden und man kann per Inline-Assembler (Intel-Syntax) Assembler-Routinen einbauen. Einzig muss (z.B. für den [[Kernel]]) ein kleines Runtime implementiert werden, welcher Funktionen zum Überprüfen von Werten während der Laufzeit zur Verfügung stellt (mehr dazu weiter unten). Um Sprachmittel wie Konstruktoren und Desktruktoren einzusetzen, bedarf es ebenfalls Kompatibillitätscode.
  
 
== Kernel in D ==
 
== Kernel in D ==
Zeile 29: Zeile 29:
 
</asm>
 
</asm>
  
−
start_ctors ist dabei im Linker-Script angegeben.
+
start_ctors ist dabei im [[Linkerscript]] angegeben.
  
 
Für die Destruktoren:
 
Für die Destruktoren:
Zeile 44: Zeile 44:
 
</asm>
 
</asm>
  
−
end_dtors ist hier auch im Linker-Script angegeben.
+
end_dtors ist hier auch im Linkerscript angegeben.
  
−
Das passende Linker-Script dazu:
+
Das passende Linkerscript dazu:
  
 
==== link.ld ====
 
==== link.ld ====
Zeile 88: Zeile 88:
 
Wer in D einen Kernel schreibt wird bei der Benutzung von Arrays beim Linken schnell folgenden Fehler zu sehen bekommen:
 
Wer in D einen Kernel schreibt wird bei der Benutzung von Arrays beim Linken schnell folgenden Fehler zu sehen bekommen:
  
−
undefined refernce to _d_array_bounds
+
<tt>undefined reference to _d_array_bounds</tt>
  
 
_d_array_bounds ist dabei nicht anderes, als eine Funktion im D-Runtime, welche überprüft, ob Array-Grenzen eingehalten werden.
 
_d_array_bounds ist dabei nicht anderes, als eine Funktion im D-Runtime, welche überprüft, ob Array-Grenzen eingehalten werden.
Zeile 97: Zeile 97:
 
</c>
 
</c>
  
−
Zu Debugging-Zwecken kann hier natürlich auch eine echt Überprüfung gemacht werden.
+
Zu Debugging-Zwecken kann hier natürlich auch eine echte Überprüfung gemacht werden.
  
 
Wer allerdings keine Runtime-Überprüfung im Kernel braucht, der kann den Compiler auch so aufrufen:
 
Wer allerdings keine Runtime-Überprüfung im Kernel braucht, der kann den Compiler auch so aufrufen:
Zeile 211: Zeile 211:
 
== D-Compiler ==
 
== D-Compiler ==
  
−
* [http://dgcc.sourceforge.net/gdc gdc] aus der GNU Compiler Collection
+
* [http://dgcc.sourceforge.net/gdc gdc] aus der [[GNU Compiler Collection]]
 
* [http://www.digitalmars.com/d dmd] Digital-Mars-D-Compiler
 
* [http://www.digitalmars.com/d dmd] Digital-Mars-D-Compiler