gpt4 book ai didi

c# - 从低级程序员的角度看 .NET Framework

转载 作者:太空狗 更新时间:2023-10-29 19:59:06 26 4
gpt4 key购买 nike

当我学习 .NET 时,我将其视为一个运行我的 .NET 程序的平台,它有自己的堆栈和堆。

但现在,在了解更多相关知识后,我将 .NET 应用程序视为与任何其他 C/C++ native 应用程序一样。它采用可移植可执行 (PE) 文件格式,具有新的数据目录和 .text 部分填充了 MSIL 代码而不是机器代码。唯一的区别是加载了很少的 DLL(被视为 .NET 平台)(与任何其他 DLL 依赖项一样)。

我想在入口点有一些机器代码调用加载的 DLL(.net 平台)和那些 DLL 的函数从 .text 部分(段更正确)读取 MSIL 并生成等效的机器代码并将其放入某种缓冲区(我不知道它是哪个区域。我不能是 .text 和 .data,因为它们是只读的。它们是堆栈还是堆?)。然后使 EIP 指向这个指令缓冲区。最后几条指令再次回调到 DLL 中,为 MSIL 的其余部分重复该过程。

Managed HeapManaged Stack 开始,它们只是进程堆和堆栈的一部分。只有少数函数(称为 GC)会跟踪这部分内存的内存分配和释放。

我喜欢这种现实的观点。我不知道我有多真实。我只是在猜测这些事情。请纠正我并告诉我更多相关信息。它与这个观点的相似度有多高?我在哪里可以从这个角度了解更多关于 .NET 平台的信息?

最佳答案

您错过了非常重要的一点——CIL 代码(以前称为 MSIL)是安全代码。你不能做任意指针巫术、类型转换或类似的邪恶事情(除了一些不安全的代码区域)。这可能是与其他语言(如 C(++)、Pascal 等)最重要的区别。这种安全保证深深地融入了语言、类型系统和运行时设计中。

关于c# - 从低级程序员的角度看 .NET Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com