register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很多很多register 变量,它累死也可能不能全部把这些变量放入寄存器吧,轮也可能轮不到你。 一、皇 ...
分类:
其他好文 时间:
2019-10-04 23:01:34
阅读次数:
103
在计算机里,内存地址分为虚拟内存地址和物理内存地址。 数据存放在物理内存中,程序运行时使用的是虚拟内存,并通过虚拟内存地址访问数据和代码。 那操作系统是如何将虚拟内存映射为物理内存地址呢? 以X86的32位系统位例,在32系统中,系统的虚拟内存地址范围为4GB。低2GB给应用程序(Ring3级别)使 ...
分类:
其他好文 时间:
2019-06-14 14:54:16
阅读次数:
107
答案是:没有关系。CPU的寻址能力与它的地址总线位宽有关,而我们通常说的CPU位宽指的是数据总线位宽,它和地址总线位宽半毛钱关系也没有,自然也与寻址能力无关。 简单的说,CPU位宽指的是一个时钟周期内CPU能处理的二进制位数,如8086 CPU是16位的,可以一次处理2个字节(16个bit),803 ...
分类:
其他好文 时间:
2019-04-22 16:37:25
阅读次数:
405
管道及IO 重定向 > < >> <<计算机组成: 运算器,控制器:CPU 存储器:RAM 输入/输出设备 I/O 程序: 指令和数据 控制器:指令 运算器: 存储器: 地址总线: 内存寻址 数据总线: 传输数据 控制总线: 控制指令 寄存器: CPU暂时存储器 系统设定: 默认输出设备: 标准输出 ...
分类:
其他好文 时间:
2019-04-20 21:41:33
阅读次数:
149
TLB:Translation Lookaside Buffer. 根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理 器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理 ...
分类:
其他好文 时间:
2019-02-01 23:49:16
阅读次数:
316
进入保护模式 [TOC] 进入保护模式 进入保护模式的步骤: 1. 关闭中断,打开地址线A20GATE,使得CPU可以访问1M以上的内存空间。 2. 设置CR0寄存器,进入保护模式。 3. 加载临时GDT 4. 进入保护模式后,首先执行jmp指令。因为内存寻址方式改变,需要刷新指令流水线 打开A20 ...
分类:
其他好文 时间:
2019-01-05 00:54:28
阅读次数:
204
程序:指令和数据控制器:指令运算器:数据存储器:RAM地址总线:内存寻址数据总线:传输数据控制总线:控制指令寄存器:CPU暂时存储器I/O:硬盘InputOutput系统设定:默认输出设备标准输出STDOUT1默认输入设备标准输入STDIN0默认错误输出标准错误输出标准输入:键盘标准输出和标准错误输出:显示屏I/O重定向:改变标准输入/输出来源/位置Linux::覆盖输出:追加输出Set-C禁止对
分类:
其他好文 时间:
2018-12-20 11:51:36
阅读次数:
218
五大类:运算器、控制器:CPU存储器:RAM输入设备/输出设备 程序:是由指令和数据组成的 控制器:读取指令运算器:存储器: 地址总线:内存寻址数据总线:传输数据控制总线:控制指令 寄存器:CPU暂时存储器 I/O:硬盘,键盘鼠标.. INPUT设备OUTPUT设备 系统设定 默认输出设备:标准输出 ...
分类:
其他好文 时间:
2018-12-03 14:08:16
阅读次数:
251
在csapp中的新理解: (1)栈向下增长,栈顶元素的地址是所有栈中元素地址中最低的 (2)因为栈和程序代码以及其他形式的程序数据都是放在同一内存中,所以程序可以用标准内存寻址方法访问栈内的任意位置 (3)加载有效地址(load effective address)指令leap实际上是movq指令的 ...
分类:
编程语言 时间:
2018-11-01 22:27:34
阅读次数:
275
汇编知识扫盲之16位汇编跟32位汇编的保护模式以及汇编代码编写 一丶内存寻址模型 逻辑地址.线程地址.物理地址 了解汇编之前.先了解一下上面这些词的含义; 逻辑地址: 这个是邮编一起生成的.逻辑地址一般都是 段加段内偏移组成的.每个进程独享. 线性地址: 由分段管理机制.将逻辑地址转化为线性地址.这 ...
分类:
其他好文 时间:
2018-09-07 20:12:09
阅读次数:
235