Nativer Compiler für C#?
-
Hi
Weiss jemand von einem geplanten oder bereits existierenden nativen Compiler für C#?
Ich meine damit NICHT .NET -> (Pseudo)nativ Compiler, sondern einen richtigen übersetzer der Sprache C# zu Maschinencode (NICHT .NET).Mir gefällt die Sprache, ich will aber nicht .NET nutzen..
Gruss
Elvis
-
Also C#, managed C++, und VB.net werden erstmal nach MSIL übersetzt und danach zu Maschinencode.
Du kannst ihn dir wie folgt ansehen:
Als Release kompilieren, und während dem laufen pausieren, dann wirst du gefragt ob du die "disassembly" anzeigen willst und das sieht dann in etwa so aus:00000000 sub esp,0Ch 00000003 push edi 00000004 push esi 00000005 push ebx 00000006 push ebp 00000007 xor eax,eax 00000009 mov dword ptr [esp+18h],eax 0000000d mov ebp,ecx 0000000f mov esi,edx 00000011 mov dword ptr [esp+10h],0 00000019 mov eax,dword ptr [esi+4] 0000001c sub eax,dword ptr [esp+2Ch] 00000020 cmp eax,dword ptr [esp+28h] 00000024 jge 00000055 00000026 mov eax,dword ptr ds:[79CB807Ch] 0000002c mov ecx,dword ptr [eax] 0000002e call dword ptr ds:[79C00968h] 00000034 mov ebx,eax 00000036 mov ecx,79C538E4h 0000003b call dword ptr ds:[79CC0108h] 00000041 mov edi,eax ....
Du siehst. Assembler-Code. Ich könnte mir auch nicht vorstellen wie das sonst laufen sollte, wenn das nicht in Maschinencode übersetzt würde.
Code-Hacker
-
Ja, aber dummerweise greift auch dieser Assi-Code auf .NET Bibliotheken zu. Wär schön wenns was geben würde das die original System-Bibliotheken nutzt..
Naja, wird wohl ein Traum bleiben.
Elvis
-
Für Java gibt es Native Compiler, aber die damit erzeugten exe-Dateien laufen nicht wirklich schneller, sind größer und haben eigentlich keinen Vorteil gegenüber dem Bytecode.
-
Ja, eben weil die ganze (oder ein Grossteil) der Runtime auch in die Exe gepackt wird. Wär eben schön wenn das Prog die Systemlibraries verwenden würde.
Also dass man gedanklich zwischen C# und .net gar keine Verbindung zu machen braucht sondern dass es als Standalone-sprache wie C++, Delphi und Co verstanden und auch kompiliert wird.