Cobra: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 44:
Hello World!
C:\>_}}
 
=== Cil ===
При компиляции Cobra файла [[Cobra/Hello.cobra|Hello.cobra]] создается двоичный объект называемый сборкой(assembly), в которой содержится CIL-инструкции, метаданные и манифест описывающие поведени класса Hello.<br />
Открыв полученную сборку в ildasm.exe, можно посмотреть что метод main был преобразован в следующие инструкции:
<font face="verdana">
<source lang="cil">
.method public hidebysig newslot virtual instance void Main() cil managed
{
// ђ §¬Ґа Є®¤ : 36 (0x24)
.maxstack 2
.language '3F5162F8-07C6-11D3-9053-00C04FA302A1', '994B45C4-E6E9-11D2-903F-00C04FA302A1', '5A869D0B-6611-11D3-BD2A-0000F80849BD'
// Source File 'c:_Cobra.cobra'
//000002: def main
.try
{
IL_0000: call void [Cobra.Core]Cobra.Core.CobraCore::RunAllTests()
//000003: print 'Hello, World!'
IL_0005: ldsfld class [Cobra.Core]Cobra.Core.StringMaker [Cobra.Core]Cobra.Core.CobraImp::_printStringMaker
IL_000a: ldstr "Hello, World!"
IL_000f: callvirt instance string [Cobra.Core]Cobra.Core.StringMaker::MakeString(object)
IL_0014: call void [Cobra.Core]Cobra.Core.CobraImp::PrintLine(string)
// Source File 'c:_Cobra.cobra.cs' not found
IL_0019: leave.s IL_0023
 
// Source File 'c:_Cobra.cobra'
//000003: print 'Hello, World!'
} // end .try
catch [mscorlib]System.Object
{
IL_001b: pop
IL_001c: call void [Cobra.Core]Cobra.Core.CobraCore::PrintDebuggingTips()
IL_0021: rethrow
} // end handler
IL_0023: ret
} // end of method HelloWorld::Main
 
} // end of class HelloWorld
</source></font>
 
== Типы данных ==