指令寄存器

《计算机是怎样跑起来的》 || 第三章 • 体验一次手工汇编(中)

怎甘沉沦 提交于 2019-12-28 21:11:07
作者:矢泽久雄 —————————————————————————————————————— 第三章 • 体验一次手工汇编(中) —————————————————————————————————————— 【03】Z80 CPU的寄存器结构 CPU寄存器简介 数据运算是在CPU中进行的,所以CPU内部有存储数据的地方,叫做“寄存器” 与I/O寄存器不同,CPU寄存器不仅能存储数据,还具备运算能力 CPU带有怎样的寄存器取决于CPU种类 不同寄存器的类型用途自然不同 图示 IX、IY、SP、PC的大小是16bit,其他的是8bit A寄存器:累加器,运算的核心 F寄存器:标志寄存器,用于存储运算结果的状态,比如是否发生进位、数字大小比较结果 PC寄存器:程序指针,存储着指向CPU接下来要执行指令的地址 PC寄存器的值会随着时钟信号自动更新,可以说程序就是依靠不断变化的PC寄存器从而运行起来的 SP寄存器:栈顶指针,在内存中创建出名为“栈”的临时数据存储区域 【04】汇编操作 设定Z80 PIO 应该用怎样的数字设定端口,在本身的资料上有 207表示设定端口为输入输出模式 255表示设定端口为输入模式 0表示设定端口为输出模式​​ 01 设定端口A为输入模式 操作数是必须已存储在CPU寄存器中的数字先把207,255加载到A寄存器再把数据写入I/O地址所对应的寄存器,其中(2

CAN总线(一)

邮差的信 提交于 2019-12-26 19:14:02
原文出处: http://www.cnblogs.com/jacklu/p/4729638.html 嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也广泛使用CAN,随着国家对海防的越来越重视,对CAN的需求也会越来越大。这个暑假,通过参加苏州社会实践,去某船舶电气公司实习几周,也借此机会,学习了一下CAN总线。 概述 CAN(Controller Area Network)即控制器局域网,是一种能够实现 分布式实时控制的 串行 通信网络 。 想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel) CAN有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到 1Mbps ,通信距离最远到 10km ,无损位仲裁机制, 多主结构 。 近些年来,CAN控制器价格越来越低,很多MCU也集成了CAN控制器。现在每一辆汽车上都装有CAN总线。 一个典型的CAN应用场景: CAN总线标准 CAN总线标准只规定了 物理层 和 数据链路层 ,需要 用户自定义应用层 。不同的CAN标准仅物理层不同。 CAN收发器负责逻辑电平和物理信号之间的转换。 将逻辑信号转换成物理信号(差分电平),或者将物理信号转换成逻辑电平。 CAN标准有两个,即 IOS11898 和 IOS11519 ,两者 差分电平特性不同 。 高低电平幅度低

SIMD指令集

▼魔方 西西 提交于 2019-12-25 05:50:11
概述 SIMD,即Single Instruction, Multiple Data,一条指令操作多个数据。是CPU基本指令集的扩展。主要用于提供fine grain parallelism,即小碎数据的并行操作。如说图像处理,图像的数据常用的数据类型是RGB565, RGBA8888, YUV422等格式,这些格式的数据特点是一个像素点的一个分量总是用小于等于8bit的数据表示的。如果使用传统的处理器做计算,虽然处理器的寄存器是32位或是64位的,处理这些数据确只能用于他们的低8位,似乎有点浪费。如果把64位寄存器拆成8个8位寄存器就能同时完成8个操作,计算效率提升了8倍.SIMD指令的初衷就是这样的,只不过后来慢慢cover的功能越来越多. 好多处理器都有SIMD指令,我们先仅关注Intel的SIMD。Intel的初代SIMD指令集是MMX,Multi-Media Extension, 即多媒体扩展,因为它的首要目标是为了支持MPEG视频解码.MMX将64位寄存当作2X32或8X8来用,只能处理整形计算.这样的64位寄存器有8组,分别命名为MM0~MM7.这些寄存器不是为MMX单独设置的,而是借用的FPU的寄存器,也就是说MMX指令执行的时候,FPU就没有办法工作。后来Intel进一步实现了SSE, SSE2~SSE4指令集,给了他们单独的寄存器,之后MMX就被停掉了。

系统调用

帅比萌擦擦* 提交于 2019-12-25 02:12:54
glibc 对系统调用的封装   在用户态进程里调用open函数 【 int open(const char *pathname, int flags, mode_t mode) 】 在glibc 源代码中有个文件 syscalls.list , 里面咧着所有glibc 的函数对应的系统调用。 另外还有一个脚本 make-syscall.sh ,可根据配置文件,对于每个封装好的系统调用,生成一个文件。 另外还有一个文件 syscall-template.S 使用上面这个宏,定义系统调用的调用方式。 对于任何一个系统调用,会调用 DO_CALL 。 这个宏32位和64位定义不同。 在源代码注释中, int 就是interrupt 。中断的意思。 int $0x80 就是触发一个软中断,通过它就可以陷入(trap) 内核。   在内核启动时,其中会有一个软中断的陷入门,当接收到一个系统调用的时候,相应的文件就会被调用,然后通过 push 和 SAVE_ALL 将当前用户态的寄存器,保存在 pt_regs 结构中。 进入内核前,会保持所有的寄存器,然后调用 do_syscall_32_irqs_on 。在这里,将系统调用号从eax里面取出来,然后根据系统调用号,在系统调用表中找到相应的函数进行调用。并将找出来的参数取出来,作为函数参数。且参数对于的寄存器与linux 的注释是一样的。

AVR汇编初探之一《AVR单片机的CPU内部结构》

别说谁变了你拦得住时间么 提交于 2019-12-24 10:57:39
学单片机那么久了,感觉想要深入,还得看汇编语言,至少得了解单片机内部结构。 下面就以ATmega16为例,介绍一下AVR单片机结构和汇编语言。 AVR单片机的CPU内核结构 如上两图,左图是虚线框内AVR CPU的内核结构,右图是AVR单片机内核结构的方框图,可以看出AVR单片机的数据总线(CPU字长)是8位的,也就说它是8位单片机。 AVR采用了Harvard结构,具有独立的数据和程序总线,CPU在执行一条指令的同时,就将PC中指定的下一条指令取出,构成了一级流水线运行方式,实现了一个时钟周期执行一条指令,数据吞吐量高达1MIPS/MHz。 AVR CPU内核由几个重要的部分组成,它们分别是: A.算数逻辑单元ALU(Arithmetic Logic Unit) AVR ALU与32个通用工作寄存器直接相连。寄存器与寄存器之间、寄存器与立即数之间的ALU运算只需要一个时钟周期。ALU操作分为3类:算术、逻辑和位操作,此外还提供了支持无/有符号数和分数乘法的乘法器,操作结果的状态将影响到状态寄存器SREG(Status Register)。 B.程序计数器PC、指令寄存器和指令译码器 程序计数器PC用来存放下一条需要执行指令在程序存储器(ROM)空间的地址(指向FlashROM空间),取出的指令存放在指令寄存器中,然后送入指令译码器中产生各种控制信号,控制CPU的运行(执行指令)。

计算机组成与结构复习整理(五)

霸气de小男生 提交于 2019-12-24 01:27:53
指令系统与中央处理机组织 指令系统 基本概念 指令格式 一般格式 按指令所包含的地址个数将指令划分 指令长度 寻址方式 指令类型 指令类型 堆栈和堆栈存取方式 中央处理机组织 CPU的三种实现方式 CPU中的主要寄存器 单总线数据通路 CPU四项基本功能 CPU时序控制方式 CPU控制流程 一条完整指令的执行 ①Add (R3),R1 ②无条件转移指令的控制序列 CPU性能设计 指令系统 基本概念 ①程序员用各种语言编写的程序最后要翻译(解释或编译)成以指令形式表示的机器语言以后,才能在计算机上运行。计算机的指令有微指令、机器指令和宏指令之分。 微指令是微程序级的命令,属于硬件;宏指令是由若干机器指令组成的,属于软件;机器指令介于二者之间,因而是硬件和软件的界面。 ②一台计算机能执行的机器指令的集合统称位该机的指令系统。 指令格式 一般格式 操作码 地址码 OP D 按指令所包含的地址个数将指令划分 a.三地址指令:(D1)OP(D2)→ D3 b.二地址指令:(D1)OP(D2)→D2 c.单地址指令:(D)OP (A)→ A(累加寄存器) d.零地址指令:空操作、停机 指令长度 选取原则: ①指令长度应为存储器基本字长的整数倍。 ②指令字长应尽量短。 寻址方式 ①立即寻址:| OP | 操作数地址 | ②直接寻址:| OP | @间接地址 | ③间接寻址:| OP | Rx |

r14/lr寄存器的值

狂风中的少年 提交于 2019-12-23 23:51:13
LR 连接寄存器:Link Register LR寄存器的作用主要由两个: 一是用来保存子程序的返回地址; 当通过BL或BLX指令调用子程序时,硬件自动将子程序返回地址保存在R14寄存器中。子程序返回时,把R14的值 复制到程序计数器PC,即可实现子程序返回。 二是当异常发生时,R14中保存的值等于异常发生时程序计数器PC的值减4(因为cortex-m3采用3级指令流水线)。 因此在异常模式下,可以根据R14的值返回到异常发生前的相应位置,继续执行。 来源: CSDN 作者: Milde_oscar 链接: https://blog.csdn.net/muaxi8/article/details/103672123

LLVM学习笔记(51)

烂漫一生 提交于 2019-12-23 08:53:23
3.10. X86折叠表的生成( v7.0) 指令折叠是在寄存器分配过程中执行的优化,目的是删除不必要的拷贝指令。例如,这样的一组指令: %EBX = LOAD %mem_address %EAX = COPY %EBX 可以被安全地替换为单条指令: %EAX = LOAD %mem_address 通常,后者较前者更小,更快。 在 X86 中,许多指令有内存形式与寄存器形式,即通过内存或寄存器传递操作数。为了执行指令折叠优化,需要某种方式将这两种形式的同一条指令关联起来。目前 LLVM 维护了几张体量庞大的表用于关联这些指令。 Intel 以色列的雇员 Ayman Musa 开发了这部分的 codegen ,希望能通过 TableGen 自动生成这些表。不过这部分代码目前因为尚有 bug ,没有默认生成。 这里 有关于这个 bug 的描述。 总的来说,这是因为 Musa 的主要假设是同一条指令的这两个形式共享相同的编码信息,除了负责“如何向指令传递参数”的部分,其中一个版本定义其中一个参数是寄存器,另一个版本定义它为内存操作数,而其他参数以相同方式传递。 但实际上,某些指令在寄存器与内存形式间有不同与上面假设的情形,例如 bt (比特测试)指令,其寄存器形式寄存器参数相关比特是第 4 、 5 、 6 比特(依赖于模式与寄存器大小),而内存形式相关比特是第 16 、 32 或 64

微处理器寄存器结构(通用寄存器、指针和状态寄存器)

我的梦境 提交于 2019-12-22 15:04:07
寄存器可以分为两大类,一类为通用寄存器,一类为指针寄存器和变址寄存器。 通用寄存器 通用寄存器主要包括:EAX、EBX、ECX、EDX EAX Accumulator 累加器,其中EAX(32位)、AH(16位)、AX,AL(8位) 累加器用作乘除法时由特殊用途,但通常情况下视为通用寄存器 EBX Base 基址寄存器,其中EBX(32位)、BH(16位)、BX,BL(8位) 基址寄存器用作存放访问存储单元的偏移地址 ECX Count 计数器,其中ECX(32位)、CH(16位)、CX,CL(8位) CL用于移位和循环移位计数,CX用作重复的串操作指令计数,CX或ECX用作LOOP/LOOPD计数 EDX Data 数据寄存器,其中EDX(32位)、DH(16位)、DX,DL(8位) 数据寄存器是一个用用寄存器,在乘除法运算时也可用于记录部分积和部分被除数 指针寄存器和变址寄存器 指针寄存器和变址寄存器包括:ESP、EBP、ESI、EDI ESP Stack Pointer 堆栈指针寄存器,该指针用于存储堆栈存储器数据 EBP Base Pointer 基址指针寄存器,该指针用于存放堆栈段的数据区的“基地址” ESI Source Index 源变址指针寄存器,用于寻址串操作指令的源数据串 EDI Destination Index 目的变址指针寄存器

sd卡驱动

有些话、适合烂在心里 提交于 2019-12-21 20:48:53
linux设备驱动那点事儿之SD卡驱动理论篇 (2011-08-01 13:56) 标签 : 电子产品 多媒体 存储器 消费类 分类: linux设备驱动程序分析 一.SD/MMC卡介绍 1.1.什么是MMC卡 MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),容量大,耗电量低,传输速度快,广泛应用于消费类电子产品中。 1.2.什么是SD卡 SD:SD卡为Secure Digital Memory Card, 即安全数码卡。它在MMC的基础上发展而来,增加了两个主要特色:SD卡强调数据的安全安全,可以设定所储存的 使用权限,防止数据被他人复制;另外一个特色就是传输速度比2.11版的MMC卡快。在数据传输和物理规范上,SD卡(24mm*32mm*2.1mm,比MMC卡更厚一点),向前兼容了MMC卡.所有支持SD卡的设备也支持MMC卡。SD卡和2.11版的MMC卡完全兼容。 1.3.什么是SDIO SDIO:SDIO是在SD标准上定义了一种外设接口,它和SD卡规范间的一个重要区别是增加了低速标准。在SDIO卡只需要SPI和1位SD传输模式。低速卡的目标应用是以最小的硬件开销支持低速IO能力。 1.4.什么是MCI MCI:MCI是Multimedia Card Interface的简称,即多媒体卡接口