Assembly.Get***Assembly的区别

理解GetEntryAssembly与GetExecutingAssembly
本文详细解析了GetEntryAssembly与GetExecutingAssembly的区别,前者返回程序入口的程序集信息,后者则返回当前执行代码所在程序集的信息,并通过实例说明了两者在不同情况下的应用。

GetEntryAssembly获取的是当前应用程序第一个启动的程序,一般就是xxx.exe文件。 
GetExecutingAssembly获取的是当前执行的方法所在的程序文件,可能是.exe,也可能是当前方法所在的.dll文件。 


如一个程序MyApp.exe,在程序中引用了MyDll.dll类库,而在MyDll.dll中有一个MyInfo方法,MyInfo调用了MyDll2.dll中的MyInfo2方法,那么结果如下: 

在MyApp.exe调用任何一个方法,获得的都是MyApp.exe的程序集信息。 

通过MyApp调用MyDll.MyInfo方法时,在MyDll.MyInfo中: 
    执行GetEntryAssembly,获得的是MyApp.exe的程序集信息。 
    执行GetExecutingAssembly,获得的是MyDll.dll的程序集信息。 
    执行GetCallingAssembly,获得的是MyApp.exe的程序集信息。 

通过MyDll的方法调用MyDll2.MyInfo2方法时: 
    执行GetEntryAssembly,获得的是MyApp.exe的程序集信息。 
    执行GetExecutingAssembly,获得的是MyDll2.dll的程序集信息。 
    执行GetCallingAssembly,获得的是MyDll.dll的程序集信息。
# 纯nasm汇编自制操作系统 ![image](run.png) #### 项目概述 本项目是一个自定义的操作系统,旨在通过汇编语言实现一个基础的引导程序(bootloader),并支持shell和应用程序。该项目的目标是提供一个简单的学习平台,帮助开发者理解操作系统的基本原理和构建过程。 --- #### 功能描述 1. **引导程序**: 使用汇编语言编写的引导程序能够加载内核代码到内存中,并启动其执行。 2. **内核加载**: 自制文件系统支持加载纯二进制文件,并在内存中正确初始化。 3. **构建工具**: 使用`make`工具管理依赖关系和生成目标文件。所有构建命令均需以Tab键开头,确保`make`能够正确解析并执行命令。 4. **调试支持**: 提供基本的调试功能,允许开发者在虚拟机或物理硬件上测试和调试系统。 --- #### 命令说明 以下是与项目相关的常用命令及其功能: **运行虚拟机**: ```bash make run ``` 使用QEMU或其他虚拟机模拟器运行操作系统镜像文件。 --- #### 使用方法 1. **安装依赖**: 确保已安装必要的开发工具,例如NASM、GCC和QEMU。可以通过以下命令安装: ```bash sudo apt-get install nasm gcc qemu ``` 2. **克隆项目**: 将项目代码克隆到本地目录: ```bash git clone https://github.com/linhhanpy/Plain-OS.git cd Plain-OS ``` 3. **构建系统**: 执行以下命令以构建整个系统: ```bash make ``` 4. **运行系统**: 构建完成后,运行以下命令以启动虚拟机: ```bash make run ``` 5. **调试与修改**: 根据需要修改`shell.asm`或其他源文件,并重新运行`make`命令以生成更新后的镜像。 --- #### 注意事项 - 确保所有Makefile中的命令行以Tab键开头,否则`make`可能无法正常工作。 - 如果选择直接提取ELF或PE文件中的二进制数据进行加载,请注意重定位问题。 - 在实际硬件上运行前,请确保系统兼容性,并备份重要数据。 --- # 加入我们 开发者: lhhasm,resfz 请在Plant OS社区QQ群添加‘admin’用户 把这段文字翻译成英语
06-02
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值