一、加载程序
被加载程序有个约定的头部,能够得到它足够的位置信息,而进行代码的重定位
1.读取了加载的程序到内存后,怎么实现跳转?
要得到它的入口地址跳转,那么就要得到它的段地址和偏移地址;
2.那么加载的程序只有一个段很好办了
在程序的开头声明它:代码的长度,偏移地址,段地址;偏移地址很好得到,关键是段地址的重新定义;
在Nasm中 |section.段名称.start| 得到的的地址是相对于整个程序开头的地址,
这个得到的第一个段的地址是0
3.要是有多个段的定义怎么办?
定义入口地址是必须的,还要把段的段地址,个数方便重定位
4.多个段中标号的开始信息是相对于程序的开始的位置,而不是相对于段的位置,那么程序怎么识别哪?
另一个定义语句是 |vstart=| 的意思是标号代表的便宜地址是从段开始的,而不是从程序开头偏移的
----------------------------------------------------------------------?
|section.段名称.start| 代表的是段相对于程序开始的偏移地址还是段地址?
标号代表的是偏移量