51CTO博客开发
001 entre的设计背景及目标 彭飞USTC pfgenyun@gmail.com Entre主页:http://www.xentre.org 1、设计背景 • 龙芯的用户性能体验由龙芯处理器的性能 和基于其上的软件性能构成。 • 龙芯的软件基本上都是开软软件,性能提升有可观的
第十三章 运行库实现 1 进程退出函数 exit (3) 格式化字符串和输出操作
第十二章 系统调用与API 1 系统调用介绍 系统调用用来进行系统资源的访问,有些行为,应用程序不借助操作系统提供的系统调用无法或者不能有效的办到。 Linux使用0x80中断号作为系统调用的入口,而Windows采用0x2E。 Linux的系统调用都有对应的C语言形式,glibc提供了完整的封装。 系统调用的弊端: (1)
第十一章 运行库 静态glibc 1 入口函数和程序初始化 入口函数:在main函数之前和之后运行的函数称为入口函数或入口点(entry point)。 一个典型的程序运行如下: (1) 进程创建,控制权交给入口点,入口点为运行库中的入口函数 (2)&n
第十章 内存 1 Stack (3) Read/write section(.date .bss) (6) 栈与调用惯例 什么是栈 堆栈帧一般包含以下几个内容: (1) &
第八章 Linux共享库的组织 1 共享库版本 共享库兼容性 导致C语言共享库ABI改变的行为有4: (1) 导出函数行为改变 (2) 导出函数被删除 (3)
第七章 动态链接 (续) 4 对于模块间的调用也要先定位GOT,然后再进行间接跳转。 (3) 动态链接的步骤和实现 动态链接器自举 动态链接器也是一个共享对象,其重定位工作必须由自己完成。所以,动态链接器不可以依赖其他任何对象,而且
第七章 动态链接 1 地址无关代码 固定装载地址困扰 共享对象在被装载时,如何确定其在虚拟空间中的地址? 共享对象地址冲突问题:程序模块的指令和数据中可能会包含一些绝对地址的引用。不同模块目标装载地址不能一样,容易造成冲突。这就是模块装载地址固定问题。 一种解决方法是静态共享库,操作系统在某些特定的地区划分一些地址块,为那些已
第六章 可执行文件的装载与进程 1 进程虚拟地址空间 32位的进程虚拟空间为4G,在linux系统中,操作系统占高位的1G,从0xC0000000到0xFFFFFFFF。用户进程虚拟空间从0x080480000开始映射。 2 装载方式 静态装载 and 动态装载 覆
第四章 静态链接 连接器一般采用“两步链接”的方法进行链接。第一步进行空间和地址分配,第二步进行符号解析和重定位。 1 空间和地址分配 空间分配:这里的空间分配只关心虚拟地址的空间分配,而不关心可执行文件的空间分配。空间分配采用相似段合并的方法,合并后某个段内部的布局是有输入文件的顺序决定的,当然收到连接脚本的控制
第三章 目标文件里有什么 1 目标文件格式 Window:PE linux:ELF ELF文件格式的文件包含四类: 可重定位文件Relocatio
第二章 编译和链接 1 连接器 最初的代码都是程序员写在纸上,用的是机器的01码,运行时存储在纸带上,子程序和跳转的目标地址都是事先计算好的,这种人工进行的地址调整就是链接器所做的工作。当程序需要修改时,如插入或删除某些指令,各目标地址需要重新计算,该过程叫重定位。 汇编语言产生后,符号的概念被普及,用来表示变量或者符号的地址,程
第一章 温故而知新 1 计算机硬件结构 原理结构依然是经典的CPU、内存、IO的基本结构。后来发展为北桥南桥互联结构,北桥负责CPU与内存和PCI总线等高速设备的互联,而南桥负责连接USB等低速设备。 2 SMP与多核 SMP与多
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号