`

PIC浅谈--《x86/x64体系探索及编程》试读

阅读更多

 

 

  看到《x86/x64体系探索及编程》这本书的介绍里提到“基本上就可以写出自己简易的OS核心”,突然想起自己大学时候学的是硬件,曾经也尝试着去用c来写一个简单的OS系统。当然,说是系统也算不上,只是当时很流行研究多任务抢占,就学着做一个简单的多任务抢占的OS。现在想来却也不记得当时具体是怎么做的和做成什么样的了。

      重点看了看试读章节第二章的部分,恰好也看到了“PIC”这样一个话题。我在学习的时候也查过,但是关于这部分的资料不太多。网上搜到的PIC相关内容大多是指“PeripheralInterfaceController”,但是在OS编程基础中的PIC指的是PositionIndependentCode,中文叫“位置无关编码”,试读章节里也用一个getstdhadle()的例子来简单介绍了一下什么是位置无关编码,因为这也算是X86基础知识吧,并没有太深入的介绍,那我也在这里用最简单易懂的方式介绍下我对“位置无关编码”的理解。

      所谓的位置无关编码。是一种库文件的编码组织方式,其特点是方便系统装载。我们了解这个可以从头说开,像试读章节的例子中一样,最早的时候我们都是用“绝对地址”来链接定位一段代码,这样就会出现一个问题,这个地址是这些代码的起始地址,代码必须放在这个绝对的位置上才能正常运行,否则当代码去访问、执行某个变量名、函数名对应地址上的代码时就会找不到,程序也就跑挂了。这样用绝对地址去定位的编码方式我们叫“位置相关编码”。  

      有“相关”就有“无关”,有“绝对”就肯定有“相对”。位置无关编码里的定位跳转指令不是一段绝对跳转指令,而是一段相对跳转指令,访问的是一个相对跳转地址,因此,包括这个语句和main在内的代码段无论是否放在它的运行域这段代码都能正常运行。这就是所谓的位置无关代码。现在我们的编码方式也已经更多的使用位置无关编码。

 

本文摘自ITEYEITeye11月技术图书有奖试读活动,原文链接如下:

http://jacksonren1987.iteye.com/blog/1717194

分享到:
评论

相关推荐

    USBasp-win-driver-x86-x64-ia64-v1.2.4.rar_giantuir_providerwf_us

    picbasic pro for pic microcontroller usb

    HI-TECH-PICC PIC10/12/16芯片用编译器

    适用于PIC10/12/16系列芯片的编译器,版本号9.83,需搭配mplab使用

    HI-TECH PIC 10/12/16系列芯片MPLAB 软件编译器

    PIC 10/12/16系列芯片MPLAB 软件编译器,在MPLAB 安装目录下执行

    PIC16F1516-7-8-9_中文资料.pdf

    PIC16F151X和PIC16LF151X器件: 高性能RISC CPU: • 优化的C编译器架构 • 仅需学习49条指令 • 可寻址最大28 KB的线性程序存储空间 • 可寻址最大1024字节的线性数据存储空间 • 工作速度: - DC –20 MHz时钟输入...

    PIC16F886-I/ss基本参数

    PIC16F886-I/ss基本参数

    PIC16F883/884/886/887中文数据手册

    发布的《PIC16F882/883/884/886/887数据手册》详细介绍了基于纳瓦技术的28/40/44引脚增强型闪存8位CMOS单片机(以下简称“PIC16F88x系列”)。这一系列单片机在工业控制、汽车电子等领域有着广泛的应用。 #### 二...

    嵌入式海思板交叉编译ffmpeg libx264 和 libx265可以在板子上面跑起来详细步骤记录。

    ./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系列单片机概述 PIC(Peripheral Interface Controller)系列单片机是由Microchip Technology Inc.设计并生产的微控制器。该系列单片机以其低功耗、高性价比以及丰富的外设...

    pic32mx5xx/6xx/7xx中文数据手册

    - **在线及在应用编程**:支持灵活的编程方式。 - **JTAG接口**:4线MIPS®增强型JTAG接口,支持不受限程序断点和6个复杂数据断点。 - **边界扫描**:符合IEEE1149.2(JTAG)标准,便于测试和诊断。 #### 十三、...

    编译ffmpeg android arm64版

    --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_cn 中文数据手册

    《PIC16F873-874-876-877中文数据手册》是一份详尽的技术文档,主要涵盖了Microchip公司的微控制器系列,包括PIC16F873、PIC16F874、PIC16F876以及PIC16F877。这些单片机(MCU)在电子设计和嵌入式系统中广泛应用,...

    PIC 16F72-1/sp 文档

    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) ![侧滑返回]...

    Bochs - The cross platform IA-32 (x86) emulator

    [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中文资料

    根据提供的文件信息,我们可以深入探讨关于PIC16F1829的知识点,这是一款采用nanoWatt XLP技术的14/20引脚闪存单片机。以下是基于标题、描述、标签以及部分内容中提到的关键信息进行的详细解析。 ### PIC16F1829...

    cplex_studio1210.linux-x86-64下载及Centos7安装教程.zip

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CPLEX_STUDIO_DIR1210/cplex/lib/x86_linux64/static_pic ``` 别忘了将`/path/to/cplex_studio installation`替换为实际的安装路径。然后,应用这些更改: ``` source ~/....

    Fastjson各版本反序列化EXP 1.2.24 1.2.41 1.2.42 1.2.43 1.2.45 48 62 66

    ![img]... # Fastjson反序列化漏洞为例 1、此时/tmp目录 ![img]...

    curl-7.83.1源代码编译的android库,android-ndk-r20b编译64位

    ./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 编程例子

    - **型号**: PIC24FJ64GA006 是一款由 Microchip 生产的高性能、低功耗的 16 位微控制器。 - **特点**: - 内置 64KB 的 Flash 存储器。 - 支持多种通信接口如 UART、SPI 和 I2C。 - 具备多个模拟和数字外设,如 ...

Global site tag (gtag.js) - Google Analytics