[Mono-devel-list] Is native codes for C# methods and CLI internal calls different?

Okehee Goh okehee at gmail.com
Fri Feb 25 12:48:35 EST 2005


I'm using mono1.1.4 with JIT in Linux on X86.
I'd like to check native codes generated for C# applications with JIT. 
I want to see how C# methods and Mono Internal calls are translated
into native codes, and also how stack frames for them are different? 
Ultimately I'd like to know that we could distinguish whether certain
stack frames of a thread are from C# methods or CLI internal functions
by checking stack frames?

For example, Directory.GetCurrentDirectory ()  is C# method.  This is
eventually implemented by calling CLI internal function
ves_icall_System_IO_MonoIO_GetCurrentDirectory().
Are they both translated into 'call' assembly instruction in X86, for example?

Anyway, in order to check native code generation, I did the followings.
I tried to map IL codes to native codes in this way; 
1.compile C# applications with AOT and get time.exe.so (mono --aot
--optimize=all time.exe)
2. generate IL codes using monodis ( monodis --output=time.il time.exe)
3. generate X86 assembly codes of time.exe.so (objdump -D time.exe.so>time.as)
I expected that i could map IL codes into native codes by comparing
time.il with time.as. But it's not.

In summary, my question is (1) how i can see native codes generated
for method invocations
and internal function calls, and (2) whether i can distinguish the stack frames?

Thank you so much.



More information about the Mono-devel-list mailing list