JAL Computing

C++COMProgramming .NET Mac Palm CPP/CLI Hobbies

 

Home
Up

Compiling and Calling Assembler Dll

It is possible to write a heavily used method in IL Assembler for efficiency and then call this method from C#. In this sample, the dll and calling code is written in IL Assembler.

IL Assembler Dll

Here is the code that prints a string to the console wrapped in a dll call testildll. To compile this code is the ilasm with the /dll directive:

>ilasm testildll.il /dll

// testildll.il
// 11.29.04 Jeff Louie
.assembly extern mscorlib {}
.module testildll.dll
.class public auto autochar Class2
{
.method public hidebysig static void Test() cil managed 
{
	.maxstack  1
	ldstr "JAL 11.25.04"
	call void [mscorlib]System.Console::WriteLine(string)
	ret	
}
}

This creates a dll called testildll.dll!

Call the Custom IL Assembler Code

Here is the code that calls the dll code, again, in assembler!

// TestILCallDll.il
// 11.29.04 Jeff Louie
.assembly extern mscorlib {}
.file testildll.dll
.module extern testildll.dll
.assembly TestILCallDll {.ver 1:0:1:0}
.class public auto autochar Class1
{
.method private static void  Main(string[] args) cil managed
{
	.entrypoint
	.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = 
		( 01 00 00 00 ) 
	call void [.module testildll.dll]Class2::Test()
	ret
} // end of method Main
}

For some reason I get a name collision if I don't use different names for the classes in the exe and dll.

Ouput:

JAL 11.25.04

Have fun.

 

 
Send mail to [email protected] with questions or comments about this web site. Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 © 
Last modified: 08/04/09
Hosted by www.Geocities.ws

1