【微机原理】8088/8086微处理器
目录
一、8088/8086的功能结构
1.总线接口部件(BIU)
2.执行部件(EU)
二、8088/8086的寄存器结构(14个)
溢出标志的概念
溢出和进位的区别
8086CPU是Intel系列的16位微处理器,他有16根数据线和20根地址线,所以可寻址的地址空间是2^20 = 1MB
8088CPU是准16位微处理器,有20根地址线,它的内部寄存器、内部运算部件以及内部操作都是按16位设计的,但对外的数据总线只有8位,在处理一个16位数据时,8088需要两步操作,因而称8088是准十六位微处理器。(继8086之后推出)
8088一次只能拉一个字节,八位数据线,而8086既可以拉一个字节也可以拉两个字节(并行拉)。
一、8088/8086的功能结构
8088/8086CPU的内部结构从功能上分成两个单元。如图
总线接口单元BIU(Bus Interface Unit)
执行单元EU(Execution Unit)
二个单元协同工作
流水线技术:两个功能部件并行工作,减少CPU为取指令而等待的时间,提高CPU的利用率和系统运行速度。
88/86两个单元的功能:
1.总线接口部件(BIU)
(1)功能:
- 从内存取指令送到指令队列
- CPU执行指令时,总线接口部件(BIU)要配合执行部件(EU)从指定的内存单元或者外设端口取数据,或将数据送到指定的内存单元或者外设的端口。
(2)组成:
- 4个段地址寄存器
- CS:16位代码段寄存器
- DS:16位数据段寄存器
- ES:16位附加段寄存器
- SS:16位堆栈段寄存器
- 16位指令指针寄存器:IP;
- 20位的地址加法器
- 4/6字节的指令队列缓冲器(8086为6个,8088是4个)
- I/O总线控制电路
(3)8086/8088的BIU指令队列和20位地址加法器的作用:
指令队列(缓冲器): 8086的指令队列缓冲器为6个字节,8088的指令队列缓冲器为4个字节。无论8086还是8088.都会在执行指令的同时,从内存中取下一条指令或者几条指令,取来的指令就放在指令队列缓冲器中。这样,一般情况下,CPU执行完一条指令就可以立即执行下一条指令,称为流水线技术,减少了CPU为取指令而等待的时间,从而提高了CPU的效率。
- 采用“先进先出”的原则
- 减少了CPU为取指令而等待的时间
- 降低了对存储器存取速度的要求。
BIU从存储器中读出指令送入指令队列,一旦指令队列中空出2个字节,BIU将自动进行读指令的操作以将填满指令队列,只要收到EU送来的操作数地址,BIU将立即形成这个操作数的物理地址,完成读/写操作。遇到转移类指令,BIU将指令队列中剩余的指令作废,重新从存储器新的单元地址取指令并送入指令队列。
地址加法器:用来产生20位地址。上面已提到8086可用20位地址寻址1MB的内存空间,但8086内部所有的寄存器都是16位的,所以需要一个附加的机构来根据16位寄存器提供的信息计算出20位的物理地址,这个机构就是20位的地址加法器。
2.执行部件(EU)
(1)功能:
- 从指令队列中取出指令
- 对指令进行译码,发出相应的传送数据或算数运算的控制信号
- 接收由总线接口部件传送来的数据,或把数据传送到总线接口部件
- 进行算数运算
(2)组成:
- 4个通用寄存器:AX,BX,CX,DX。
4个通用寄存器既可以作为16位寄存器用,也可以作为8位寄存器用。分别为:AH,AL,BH,BL,CH,CL,DH,DL。其中AX寄存器又称为累加器,8086指令系统中有许多指令通过累加器的动作来执行,AX为16位累加器,AL为8位累加器。
- 4个专用寄存器:BP、SP、SI、DI
- 基质指针寄存器BP
- 堆栈指针寄存器SP
- 源变址寄存器SI
- 目的变址寄存器DI
- 标志寄存器FR:
- 标志寄存器共有16位,就用了9位,其中7位未用。
- 其中6个标志位反映CPU指令运行后的运行状态信息,分别为SF、ZF、PF、CF、AF、OF。这些标志位用于根据指令执行后的操作结果进行判断转移。
- 3个控制标志,分别为DF、IF和TF。控制标志可由编程员通过指令进行设置,有专门的指令对控制标志置0或置1。
- 算数逻辑单元ALU:它是16位的运算器,可用于8位或16位二进制算术和逻辑运算,也可按指令的寻址方式计算寻址存储器所需的16位偏移量。
- 数据暂存寄存器:它协助ALU完成运算,暂存参加运算的数据。
- EU控制电路:从总线接口的指令队列取出指令操作码,通过译码电路分析,发出相应的控制命令,控制ALU数据总线送到相应的寄存器。同时标志寄存器(PSW)根据运算结果改变状态。
8088/8086两个单元的协同功能:
1.BIU(总线接口单元):负责CPU对主存和外设接口进行访问(取、送)
(1)从内存取指令送指令队列
(4)从内存或I/O接口取操作数
(7)从BIU送结果送到内存/外存
2.EU(执行部件):负责指令的译码、执行和数据的运算
(2)从指令队列取指令送控制器:分析、译码。
(3)在运算器处理加工
(5)操作数送ALU,在ALU处理
(6)送结果到BIU
二、8088/8086的寄存器结构(14个)
8088/8086微处理器包含8个通用寄存器(4个通用数据寄存器、4个指针和变址寄存器)、1个指令指针寄存器、4个段寄存器和1个标志寄存器。
1.通用寄存器
88/86有8个通用的16位寄存器(在EU)。
- 数据寄存器:AX、BX、CX、DX
- 变址寄存器:SI、DI
- 指针寄存器:SP、BP
(1)数据寄存器
通用数据寄存器包括4个16位的寄存器AX、BX、CX、DX,他们即可以作为16位寄存器使用,也可以分为两个8位寄存器使用,即高8位寄存器AH、BH、CH、DX的低8位寄存器AL、BL、CL、DL。这些寄存器既可以作为算术、逻辑运算的源操作数,向ALU提供参与运算的原始数据,也可以作为目标操作数,保存运算的中间结果或最后结果。
【注意】:8086/8088CPU的14个寄存器中除了这4个16位寄存器能分别当作两个8位寄存器来用之外,其他寄存器都不能这样使用。
- AX:累加器(Accumulator):用该寄存器存放运算结果,可提高指令的执行速度。此外,所有的I/O指令都使用该寄存器与外设端口交换信息。
- BX:基址寄存器(Base address Register):8086/8088CPU中有两个基址寄存器BX和BP。BX用来存放操作数在内存中数据段内的偏移地址,BP用来存放操作数在堆栈段内的偏移地址。
- CX:计数寄存器(Counter):在设计循环程序时,使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。
- DX:数据寄存器(Data register):在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
(2)指针及变址寄存器
指针及变址寄存器分为两个指针寄存器SP(stack pointer)、BP(base pointer)和两个变址寄存器SI(source index)、DI(destination index),这组寄存器通常用来存放存储器单元的16位偏移地址(即相对于段起始地址的距离,简称编译地址)
指针及变址寄存器都是16位,编码范围仅为 0000H~FFFFH。
指针寄存器
在进行堆栈操作的过程中,SP用来指示堆栈栈顶的偏移地址,称为堆栈指针;而BP则用来存放位于堆栈段中的一个数据区的“基址”的偏移量,称为基址指针。
- SP:堆栈指针(Stack Pointer):在使用堆栈操作指令(PUSH 或 POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。
- BP:基址指针(Base Pointer):作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。
变址寄存器
SI、DI用来存放当前数据所在存储单元的偏移地址。在串操作指令中,SI用来存放源操作数地址的偏移量,称为源变址寄存器,DI用来存放目标操作数地址的偏移量,称为目标变址寄存器。
- SI:源地址寄存器(Source Index)
- DI:目的地址寄存器(Destination Index)
这两个寄存器通常用在字符串操作时存放操作数的偏移地址,其中SI存放源串在数据段内的偏移地址,DI存放目的串在附加数据段内的偏移地址。
2.段寄存器(在BIU)
在8086CPU中有4个16位的段寄存器。这些寄存器指令了一个特定的现行段,用来存放各段的段基址。
8086/8088CPU中,内存空间是1MB(20位地址线),但寄存器只有16位,因此1MB被分成若干逻辑段,最长是64KB(因为8088/8086中寄存器是16位的)。这些逻辑段是动态的。
- CS:代码段寄存器(Code Segment)
- SS:堆栈段寄存器(Stack Segment)
- DS:数据段寄存器(Data Segment)
- ES:附加段寄存器(Extra Segment)(在串指令中,目的操作数指明必须在现行附加段中)
当用户用指令设定了他们的初值后,实际上已经确定了一个64KB的存储区段。
其中代码段寄存器CS用来存放当前使用的代码段的段基址,用户变址的程序必须存放在代码段中,CPU将会依次从代码段中取出指令代码并执行。
数据段寄存器DS用来存放当前使用的数据段的段基址,程序运行所需的原始数据以及运算的结果应存放在数据段中。
附加段寄存器ES用来存放当前使用的附加段的段基址,它通常也用来存放数据,但在数据串操作时,用来存放目标数据串(此时DS用来存放源数据串)。
堆栈段寄存器SS用来存放当前使用的堆栈段的段基址,所有的堆栈操作的数据均保存在这个段中。
3.指令指针寄存器(IP)
IP为16位指令指针,IP的内容总是指向BIU将要取的下一条指令代码的16位偏移地址。当取出1个字节指令代码后,IP自动加1并指向下一条指令代码的偏移地址。它的内容是由BIU来修改的,用户不能通过指令预置或修改IP的内容,但有些指令的执行可以修改它的内容,也可以将其内容压入堆栈或由堆栈中弹出。
IP:指令指针寄存器(Intsruction Pointer)
IP寄存器是一个专用寄存器(CPU专用)
由CS(代码段寄存器):IP(指令指针寄存器)确定 下一条指令的地址。
4.标志寄存器FR(在EU中)
8086CPU中有一个16位的状态标志寄存器FR(flag registr),用来存放下一条要读取的指令在代码段内的偏移地址。用户程序不能直接访问IP。但是只使用了9位。其中6位为状态标志位,用来反映算数运算或逻辑运算结果的状态;3位为控制位,用来控制CPU的操作。
这种特殊的寄存器在8086CPU中,被称为标志寄存器flag。8086CPU的标志寄存器有16位,其中存储的信息通常又被称为程序状态字(PSW)。
(1)状态标志位
名称 | 描述 |
CF(Carry Flag)进位标志位 | 当进行加减运算时 ,若最高位发生进位或借位,则CF为1,否则为0。该标志位通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围。 |
PF(Parity Flag)奇偶标志位 | 当指令执行结果的低8位中含有偶数个1时,PF为1,否则为0。 |
AF(Auxiliary Flag)辅助进位标志位 | 当执行一条加法或减法运算指令时,若结果的低字节的低4位向高4位有进位或借位,则AF=1,否则为0。 |
ZF(Zero Flag)零标志位 | 若当前的运算结果为0,则ZF=1,否则为0。 |
SF(Sign Flag)符号标志位 | 若运算结果的最高位为1,SF=1,否则为0。 |
OF(Overflow Flag)溢出标志位 (根据最高位的进位和次高位的进位是否相同来确定。两者不同为1,否则为0) | 当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则为0。该标志通常用来判断有符号数运算结果是否溢出。 |
溢出标志的概念
- 研究处理器内部以补码表示有符号数
- 8位整数范围是:-128~+127
- 16位整数范围是:-32768~+32767
- 如果运算结果超出这个范围,就产生了溢出
- 有溢出,说明有符号数的运算结果不正确
溢出判断规则:
- 真值超范围
- 同号相加(异号相减):正 + 正 —> 负 负 + 负 -> 正
- 双进位
注意:默认运算是补码的运算,一定要变成真值再运算。(补码变成原码的方式是:正数的补码与原码一致,负数的补码:符号位不变,其他位按位取反加1)
溢出和进位的区别
- OF(溢出)和CF(进位):意义不同
- 溢出标志:表示有符号数运算结果是否超出范围,运算结果已经不正确
- 进位标志:标志无符号数运算结果是否超出范围,运算结果仍然正确
(2)三位控制位
控制标志位有三个,用于控制CPU的操作,由程序设置或清除。
名称 | 描述 | 作用 |
TF(Trap Flag)跟踪(陷阱)标志位 | 是为测试程序的方便而设置。若将TF = 1,CPU处于单步工作方式 。 | 单步标志(没有对应指令) 处理器在每条指令执行结束时,产生一个编号为1的内部中断 TF=1,单步中断 逐条指令调试程序的方法就是单步调试 |
IF(Interrupt Flag)中断允许标志位 | 是用来控制可屏蔽中断的控制标志位。若将IF = 1,表示允许CPU接受外部从INTR(可屏蔽中断请求信号)引脚上发来的可屏蔽中断请求;若用CLI指令将IF = 0,则禁止CPU接受可屏蔽中断请求信号。 | 控制可屏蔽中断是否响应: CLI:IF = 0,禁止中断 STI:IF = 1,允许中断 |
DF(Direction Flag)方向标志位 | 若将DF= 1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;若DF = 0否则按增地址方式进行。 | 串操作指令,控制地址的变化方向:CLD:DF = 0,地址自动增加 STD:DF = 1,地址自动减少 |
相关文章:
【微机原理】8088/8086微处理器
目录 一、8088/8086的功能结构 1.总线接口部件(BIU) 2.执行部件(EU) 二、8088/8086的寄存器结构(14个) 溢出标志的概念 溢出和进位的区别 8086CPU是Intel系列的16位微处理器,他有16根数据…...
springboot第12集:DAO功能代码
在Spring Boot中,DAO是数据访问对象的缩写,它是一种设计模式用于提供对数据库操作的抽象层。通过使用DAO模式,我们可以将数据操作与业务逻辑分离,并提供一个单独的接口来执行所有的数据库操作。 在Spring Boot中,通常使…...
基于KZG多项式承诺方案的RLN
1. 引言 RLN——Rate-Limiting Nullifier为PSE团队主导的项目,源自: Barry White Hat 2019年博客 Semaphore RLN, rate limiting nullifier for spam prevention in anonymous p2p setting RLN(Rate-Limiting Nullifier)是一种…...
《站在巨人的肩膀上学习Java》
Java从诞生距今已经有28年了,在这段时间里,随着Java版本的不断迭代,Java新特性的不断出现,使得Java被使用的越来越广泛。在工程界Java语言一直是大家最喜欢的语言之一,Java一直排行在编程语言热门程度的前3名。 可想而…...
敏捷ACP.敏捷估计与规划.Mike Cohn.
第一部分 传统规划失败的原因 vs 敏捷规划有效的原因 传统的项目规划方式往往会让我们失望。要回答-一个 新产品的范围/进度/资源的组合问题,传统规划过程不一定会产生令人非常满意的答案和最终产品。以下- -些论据可以支持这个结论: ●大约2/3的项目会显著超…...
[创新工具和方法论]-01- DOE课程基础知识
文章目录 1.DOE实验设计的介绍1.1 什么是实验设计DOE?1.2 DOE的优势有哪些?1.3 如何开展DoE研究?步骤 2.DOE实验培训3.数据分析步骤4.实验的随机化5.偏差6.R方 相关系数假设检验 7.三因子二水平全因子设计 1.DOE实验设计的介绍 实验设计是一种安排实验和分析实验数…...
LeetCode-1033. 移动石子直到连续
题目链接 LeetCode-1033. 移动石子直到连续 题目描述 题解 题解一(Java) 作者:仲景 这题目挺难懂的,得画画图才能更好的理解 这也是LeetCode的尿性,习惯了,非得整这种别人看不懂的鸟语 你可以这样理解&a…...
JVM调优入门指南:掌握步骤、参数和场景
前言 作为Java开发者,我们经常需要优化应用的性能,其中JVM调优是非常重要的一部分。在本文中,我们将介绍JVM调优的一般步骤和方法,了解JVM调优参数,如堆大小、新生代比例、GC算法等参数的作用和配置方式,并…...
基于JSP+MySQL的跳蚤市场网站设计与开发
摘 要 在当今社会,网络信息已经不是什么很陌生的词汇,每天都在这个信息时代里生活着并且享受着它带来的与众不同。网络购物可以说是飞速发展的,这种购物方式逐渐的影响着人们的衣食住行。所以利用计算机实现 跳蚤市场网站设计与开发势在必行。本网站是一个校园的跳蚤市场网…...
内网穿透NPS和宝塔Nginx配合使用,开启SSL访问本地局域网网络
并非为了教学,仅供自己记录,方便下次用。所以内容不会刻意花时间写的很细节详细。 1. 服务器NPS配置 NPS install安装后,配置文件会在其他位置,通过是 /etc/nps/nps.conf目录。 找到进行修改,主要修改的是http_proxy_p…...
ToLua框架
ToLua 是一个用于在 Unity 中为 Lua 提供 C# 语言绑定的框架。通过 ToLua,你可以方便地将 C# 代码暴露给 Lua 脚本,并在 Lua 脚本中调用 C# 类、方法和属性。 更新流程 原理:使用AssetBundle进行资源的更新,而由于lua运行时才编…...
Golang-常见数据结构Map
Map map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典。这是一种快速寻找值的理想结构:给定 key&…...
基于空间矢量脉宽调制(SVPWM)的并网逆变器研究(Simulink)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
介绍tcpdump在centos中的使用方法
tcpdump是一款强大的命令行数据包分析器,支持多种过滤和抓包参数。下面将介绍tcpdump的常用抓包参数。当需要监控CentOS系统的网络流量或者进行网络故障排查时,可以使用tcpdump来捕获数据包并进行分析。 下面介绍在CentOS中使用tcpdump的方法࿱…...
机器学习实战:Python基于DT决策树模型进行分类预测(六)
文章目录 1 前言1.1 决策树的介绍1.2 决策树的应用 2 Scikit-learn数据集演示2.1 导入函数2.2 导入数据2.3 建模2.4 评估模型2.5 可视化决策树2.6 优化模型2.7 可视化优化模型 3 讨论 1 前言 1.1 决策树的介绍 决策树(Decision Tree,DT)是一…...
操作系统之进程同异步、互斥
引入 异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。 但是在一定的条件之下,需要进程按照一定的顺序去执行相关进程: 举例说明1: 举例说明2: 读进程和写进程并发地运行,由于并发必然导致异步性…...
你了解这2类神经性皮炎吗?常常预示着这5类疾病!
神经性皮炎属于慢性皮肤病,患者皮肤可出现局限性苔藓样变,同时伴有阵发性瘙痒。神经性皮炎易发生在颈部两侧和四肢伸侧,中年人是高发人群。到目前为止神经性皮炎病因还并不是很明确,不过一部分病人发病前常常出现精神神经方面异常…...
二叉搜索树【Java】
文章目录 二叉搜索树的性质二叉搜索树的操作遍历查找插入删除 二叉搜索树又称为二叉排序树,是一种具有一定性质的特殊的二叉树; 二叉搜索树的性质 若它的左子树不为空,则左子树上结点的值均小于根节点的值; 若它的右子树不为空&a…...
二叉树的遍历方式
文章目录 层序遍历——队列实现分析Java完整代码 先序遍历——中左右分析递归实现非递归实现——栈实现 中序遍历——左中右递归实现非递归实现——栈实现 后续遍历——左右中递归实现非递归实现——栈加标志指针实现 总结 层序遍历——队列实现 给你二叉树的根节点 root &…...
SpringCloud01
SpringCloud01 微服务入门案例 实现步骤 导入数据 实现远程调用 MapperScan("cn.itcast.order.mapper") SpringBootApplication public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}…...
SpringBoot整合Redis实现点赞、收藏功能
前言 点赞、收藏功能作为常见的社交功能,是众多Web应用中必不可少的功能之一。而redis作为一个基于内存的高性能key-value存储数据库,可以用来实现这些功能。 本文将介绍如何使用spring boot整合redis实现点赞、收藏功能,并提供前后端页面的…...
【Java入门合集】第一章Java概述
【Java入门合集】第一章Java概述 博主:命运之光 专栏:JAVA入门 学习目标 1.理解JVM、JRE、JDK的概念; 2.掌握Java开发环境的搭建,环境变量的配置; 3.掌握Java程序的编写、编译和运行; 4.学会编写第一个Java程序&#x…...
Android无线调试操作说明
1.首先通过手机机蓝牙将jackpal.androidterm-1.0.70.apk(终端模拟器)传的设备上安装 链接: https://pan.baidu.com/s/151SzEgsX0b_VTWowzfUrsA?pwdrn75 提取码: rn75 复制这段内容后打开百度网盘手机App,操作更方便哦 2.打开这个终端模拟器,输入以下命…...
什么是 Python ?聊一聊Python程序员找工作的六大技巧
最近我一直在思考换工作的事情。因此,这段时间我会看一些题目,看一些与面试相关的内容,以便更好地准备面试。我认为无论你处于什么阶段,面试中都会有技术面试环节。无论是初级职位还是高级职位,都需要通过技术面试来检…...
RabbitMQ 01 概述
什么是消息队列 进行大量的远程调用时,传统的Http方式容易造成阻塞,所以引入了消息队列的概念,即让消息排队,按照队列进行消费。 它能够将发送方发送的信息放入队列中,当新的消息入队时,会通知接收方进行处…...
面经|曹操出行供需策略运营
1.自我介绍 面试官表示看了简历之后,表示对专业能力比较放心。想了解下对于专业能力之外,关于其他方面的介绍。 2.策略运营,除了工具之外,还有哪些能力是需要具备的 回答:主要是从做项目的维度逻辑先去回答的。 分析思…...
【Python】selenium工具
目录 1. 安装 2. 测试 3. 无头浏览器 4. 元素定位 5. 页面滑动 6. 按键、填写登录表单 7. 页面切换 Selenium是Web的自动化测试工具,为网站自动化测试而开发,Selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接…...
实验六~Web事件处理与过滤器
1. 创建一个名为exp06的Web项目,编写、部署、测试一个ServletContext事件监听器。 BookBean代码 package org.example.beans;import java.io.Serializable;/*** Created with IntelliJ IDEA.* Description:* User: Li_yizYa* Date: 2023—04—29* Time: 18:39*/ Su…...
刷题4.28
1、 开闭原则软件实体(模块,类,方法等)应该对扩展开放,对修改关闭,即在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关…...
做了一年csgo搬砖项目,还清所有债务:会赚钱的人都在做这件事 !
前段時间,在网上看到一句话:有什么事情,比窮更可怕? 有人回答说:“又忙又窮。” 很扎心,却是绝大多数人的真实写照。 每天拼死拼活的996,你有算过你的時间值多少钱? 我们来算一笔…...
猎场第几集做的网站推广/推广方案怎么做
1. 找样本文章好辛苦啊,都没有批量下载,要一篇一篇下载,找到一个630多篇英语小说的网站,现在还有160多篇没下载。但没有办法了,要研究必须先要有样本数据。 2. 终于解出了a^logb(n) <> n^logb(a)的转换方式。 转…...
济南网站建设云华互动/凡科建站靠谱吗
先来说一下对异步和同步的理解:同步调用:调用方在调用过程中,持续等待返回结果。异步调用:调用方在调用过程中,不直接等待返回结果,而是执行其他任务,结果返回形式通常为回调函数。其实…...
建设银行网站注销吗/网站优化外包
模板链接: 支持区间加减,乘。询问区间和。 要注意的几点: 1.输出格式!!!! 2.$printf("")$语法要写对,不然的话能过编辑,半天调不出来。 3.位运算的时候$>&g…...
网站如何做广告/济南seo怎么优化
Linux内核设计与实现(6)第六章:内核数据结构1.链表1.1 container_of 解释2. 队列3. 映射4. 红黑树1.链表 内核中关于链表定义的代码位于: include/linux/list.h linux内核中的链表使用方法和一般数据结构中定义的链表是有所不同的…...
做标书经验分享网站/网站推广哪个好
不管是农场内亦或是rts,我很难总结出游戏的乐趣究竟在哪里 也许最近看到了一些端倪 玩家乐于创造出一些东西,比如看着星露谷物语的树一棵棵菜被种植,监狱建筑师里被建筑的房间,rts里被生产出来的部队 玩家乐于建筑出有序的东西 毁…...
中国住房和城乡建设部网站6/品牌设计公司排名前十强
朱利安莫茨 ( Julian Motz )对使用Web Notification API显示动态消息进行了同行评审。 感谢所有SitePoint的同行评审人员使SitePoint内容达到最佳状态! 我们生活在一个世界中,在您的智能手机范围内,不再存在来自您喜爱…...