When I studied .NET, I saw it as a platform on which my .NET programs are running, which have their own stack and heap.
But now, having learned more about things, I see the .NET application just like any other native C / C ++ application. It is in Portable Executable (PE) format with a new data directory, and the .text section is populated with MSIL instead of machine code. The only difference is that several DLLs (which are considered to be the .NET platform) are loaded (like any other Dll dependency).
I think that at the entry point itself there is some machine code that calls the loaded DLL (.net platform), and the functions of these DLLs read the MSIL from the .text section (segment to be more correct) and generate equivalent machine code and put it into some kind of buffer (I don’t know what area it will be in. I cannot be .text and .data, since they are read-only, will they be a stack or a heap?). Then enter EIP in this instruction buffer. The last few commands return to the DLLs again to repeat the process for the rest of MSIL.
As with the Managed Heap and Managed Stack , this is just part of the process heap and stack. its only a few functions (called GC) will track memory allocation and release from this part of the memory.
I like this realistic look. I don’t know how right I am. I just guess about it. Please correct me and tell me more about this. How much will this look like this? Where can I learn more about the .NET platform from this perspective?
claws
source share