看到《x86/x64体系探索及编程》这本书的介绍里提到“基本上就可以写出自己简易的OS核心”,突然想起自己大学时候学的是硬件,曾经也尝试着去用c来写一个简单的OS系统。当然,说是系统也算不上,只是当时很流行研究多任务抢占,就学着做一个简单的多任务抢占的OS。现在想来却也不记得当时具体是怎么做的和做成什么样的了。
重点看了看试读章节第二章的部分,恰好也看到了“PIC”这样一个话题。我在学习的时候也查过,但是关于这部分的资料不太多。网上搜到的PIC相关内容大多是指“Peripheral Interface Controller”,但是在OS编程基础中的PIC指的是Position Independent Code,中文叫“位置无关编码”,试读章节里也用一个getstdhadle()的例子来简单介绍了一下什么是位置无关编码,因为这也算是X86基础知识吧,并没有太深入的介绍,那我也在这里用最简单易懂的方式介绍下我对“位置无关编码”的理解。
所谓的位置无关编码。是一种库文件的编码组织方式,其特点是方便系统装载。我们了解这个可以从头说开,像试读章节的例子中一样,最早的时候我们都是用“绝对地址”来链接定位一段代码,这样就会出现一个问题,这个地址是这些代码的起始地址,代码必须放在这个绝对的位置上才能正常运行,否则当代码去访问、执行某个变量名、函数名对应地址上的代码时就会找不到,程序也就跑挂了。这样用绝对地址去定位的编码方式我们叫“位置相关编码”。
有“相关”就有“无关”,有“绝对”就肯定有“相对”。位置无关编码里的定位跳转指令不是一段绝对跳转指令,而是一段相对跳转指令,访问的是一个相对跳转地址,因此,包括这个语句和main在内的代码段无论是否放在它的运行域这段代码都能正常运行。这就是所谓的位置无关代码。现在我们的编码方式也已经更多的使用位置无关编码。
分享到:
相关推荐
picbasic pro for pic microcontroller usb
适用于PIC10/12/16系列芯片的编译器,版本号9.83,需搭配mplab使用
PIC 10/12/16系列芯片MPLAB 软件编译器,在MPLAB 安装目录下执行
PIC16F151X和PIC16LF151X器件: 高性能RISC CPU: • 优化的C编译器架构 • 仅需学习49条指令 • 可寻址最大28 KB的线性程序存储空间 • 可寻址最大1024字节的线性数据存储空间 • 工作速度: - DC –20 MHz时钟输入...
PIC16F886-I/ss基本参数
发布的《PIC16F882/883/884/886/887数据手册》详细介绍了基于纳瓦技术的28/40/44引脚增强型闪存8位CMOS单片机(以下简称“PIC16F88x系列”)。这一系列单片机在工业控制、汽车电子等领域有着广泛的应用。 #### 二...
./configure --prefix=/home/lulei/work/ffmpeg --enable-shared --enable-static --host=arm-linux --cross-prefix=arm-himix400-linux- --disable-opencl --enable-pic --disable-asm ``` 配置完成后,运行`...
### 常用PIC系列单片机特性解析 #### PIC系列单片机概述 PIC(Peripheral Interface Controller)系列单片机是由Microchip Technology Inc.设计并生产的微控制器。该系列单片机以其低功耗、高性价比以及丰富的外设...
- **在线及在应用编程**:支持灵活的编程方式。 - **JTAG接口**:4线MIPS®增强型JTAG接口,支持不受限程序断点和6个复杂数据断点。 - **边界扫描**:符合IEEE1149.2(JTAG)标准,便于测试和诊断。 #### 十三、...
--extra-ldflags='-L/path/to/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib64 -L/path/to/ndk/platforms/android-$API/arch-arm64/usr/lib' ``` 这里,我们指定了目标操作系统为Linux(因为Android基于Linux...
《PIC16F873-874-876-877中文数据手册》是一份详尽的技术文档,主要涵盖了Microchip公司的微控制器系列,包括PIC16F873、PIC16F874、PIC16F876以及PIC16F877。这些单片机(MCU)在电子设计和嵌入式系统中广泛应用,...
PIC16F72是一款由Microchip Technology Inc.生产的28脚8位CMOS微控制器,具有A/D转换器功能。该文档是PIC16F72的数据手册,为硬件开发提供重要参考。在该数据手册中,详细介绍了PIC16F72的特性和技术规格,是硬件...
[首页](https://github.com/alanwangmodify/weChatApp-Run/blob/master/pic/home.png) ![跑步页面](https://github.com/alanwangmodify/weChatApp-Run/blob/master/pic/run.png) ![侧滑返回]...
[1510142] Native Windows XP x64 Edition binary [1062553] select mouse (de)activation in bochsrc [2930633] legacy mouse capture key : not specific enough [2930679] Let user change mouse capture ...
根据提供的文件信息,我们可以深入探讨关于PIC16F1829的知识点,这是一款采用nanoWatt XLP技术的14/20引脚闪存单片机。以下是基于标题、描述、标签以及部分内容中提到的关键信息进行的详细解析。 ### PIC16F1829...
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CPLEX_STUDIO_DIR1210/cplex/lib/x86_linux64/static_pic ``` 别忘了将`/path/to/cplex_studio installation`替换为实际的安装路径。然后,应用这些更改: ``` source ~/....
./configure --prefix=/usr/local/android --host aarch64-linux-android --with-pic --disable-shared make -j4;make install 在wsl下面用ndk20编译的, aarch64-linux-android29-clang++ aarch64-linux-android-...
- **型号**: PIC24FJ64GA006 是一款由 Microchip 生产的高性能、低功耗的 16 位微控制器。 - **特点**: - 内置 64KB 的 Flash 存储器。 - 支持多种通信接口如 UART、SPI 和 I2C。 - 具备多个模拟和数字外设,如 ...
根据提供的文件信息,本文将详细介绍ET-BASE PIC40/1939用户手册中的知识点,主要围绕ET-BASE PIC40/1939开发板的功能、特性和使用方法。 ### ET-BASE PIC40/1939开发板概述 ET-BASE PIC40/1939是一款用于PIC微...