终于到了我第二喜欢的vim功能了(当然了,最喜欢的是.命令)。我原本计划在介绍完.命令之后介绍宏,以便让各位小伙伴们能了解到vim对于重复操作进行的强大的优化。但是由于宏本身跟寄存器息息相关,所以还是忍痛割爱,将它放到寄存器之后。废话不多说让我们开始吧。 宏的基本使用 我们还是以
工程模板 STM32系列单片机的学习路上,第一道门槛便是开发环境的搭建与工程模板的建立,首先需要有一个完整的开发环境,才能迈出嵌入式的第一步: Step.0 准备开发环境 基础部分 MDK-ARM:Keil Review MDK是Keil公司旗下针对ARM架构微控制器的嵌入式软件开发解决方案,集成了创建、构建和
ASM@RISC-V CPU寄存器 Register ABI Discription Attribution x0 zero 硬件常数0 N/A x1 ra 返回地址 Caller x2 sp 栈指针 Callee x3 gp 全局指针 - x4 tp 线程指针 - x5-x7 t0-t2 临时变量 Caller x8 s0/fp 保存寄存器/帧指针 Callee x9 s1 保存寄存器 Cal
1. gcc内联汇编格式 __asm_- __volatile__(指令部: 输出部: 输入部: 损坏部) gcc内联汇编在处理器变量和寄存器上提供了一个模板和一些约束条件: (1) 在指令部(Assembler Template)中数字前加上%,如%0、%1等,表示需要使用寄存器的样板操作数。若指令部中用到几个不同的操作数,就说明
目录 一、前景回顾 二、硬盘的工作原理 三、IDE硬盘接口技术 一、前景回顾 前面说到,开机的启动过程有如下三点: 1、按下开机键后,CPU将cs:ip寄存器初始化为0xf000:0xfff0,这个位置是BIOS程序的入口处,这个位置存放的代码是jmp far f000:e05b,通过这行代码CPU又将cs:ip寄存器
所有的数据都有两种类型:数据类型,存储类型。 数据类型:如int, float等 存储类型:一共有四种存储类型的变量,分别为自动变量(auto)、静态变量(static)、外部变量(extern)以及 寄存器变量(register) auto - 函数中所有的非静态局部变量。 auto型一般是函数内部定义的变量(常用,且前面不加auto)。
很久以前听说过硬件IIC的“难用”,也在其他单片机上尝试过调试硬件IIC,调“通”过,却很容易卡死,于是默默给硬件IIC贴上个“不稳定”的标签,之后就一直用软件模拟IIC。 CH582这块单片机主攻蓝牙相关的功能,也有硬件IIC这个模块。考虑到低功耗蓝牙对时间的把控比较严格,相比软件IIC,硬件IIC
:栈的功能 用于记录问题的依赖关系 保存函数的参数,局部变量和寄存器环境 每个函数都有自己的一个独立的栈空间 寻址站内数据的时候,栈底更稳定,栈底也定位一个函数的位置 _cdecl 参数从右往左传递,使用栈空间传递参数,调用放清理参数空间(支持不定参数) 如:printf 编译后命名为_functi
寄存器变量 变量通常存储与计算机内存中,如果幸运的话,寄存器变量存储在cpu的寄存器中。和普通变量相比,访问和处理速度快,但是不在内存中,无法获取寄存器变量的地址。 使用register关键字,请求变量保存在寄存器中,但编译器会根据寄存器和最快课用内存数量衡量请求,或者忽略请求,不一定会把
目录引言数据传送指令算术运算指令逻辑指令转移指令处理器控制指令串处理指令 引言 8086CPU提供几大类指令,即数据传统指令 数据传送指令 比如MOV,PUSH,POP,PUSHF,POPF,XCHG等,这些指令实现寄存器和内存、寄存器和寄存器之间的单个数据传送,或者直接将立即数送入寄存器或内存。 算术运
图着色寄存器分配 视频地址:Bilibili 这里说说图着色,先讲解原理,同时也提供了一个java语言的实现。 图着色问题 在介绍图着色寄存器分配之前,先来说一下图着色问题。下面是一个图: 图中一共6个结点,被边相连的结点表示有相邻的关系,有相邻关系的结点不可以被染成同一种颜色,这就好像给地
汇编语言 基础知识 机器语言与汇编语言 机器语言:一列二进制数,计算机将其变为一列高低电平,驱动计算机的电子器件。 汇编语言:机器语言难以辨别和记忆,便产生了便于记忆的机器指令的书写格式 \(e.g.:\) 操作:把寄存器BX中的内容送到AX中 机器指令:1000100111011000 汇编指令:mov a
目录引言flag寄存器标志位介绍ZF标志,零标志位PF标志,奇偶标志位SF标志,符号标志位CF标志位,进位标志位OF标志,溢出标志位adc指令sbb指令cmp指令无符号数比较有符号数比较检测比较结果的条件转移指令根据无符号数比较结果进行转移的条件转移指令根据有符号数比较结果进行转移的条件转移
目录数据处理两个基本问题寄存器reg与段寄存器sreg机器指令处理的数据所在位置汇编语言中用来表达数据位置的三个概念寻址方式指令要处理的数据有多长通过寄存器名指明要处理的数据的尺寸用操作符X ptr指明内存单元的长度其他方法div除法指令伪指令dddup操作符 数据处理两个基本问
基本地址变换机构:借助页表实现地址转换的一组硬件机构 页表寄存器(PTR):用于存放页表在内存中的起始地址和页表长度。 进程未执行时,页表的始址和页表长度放在:进程控制块(PCB)中 进程被调度时,操作系统内核会把页表的始址和页表长度放到:页表寄存器中 地址变换过程:逻辑地址-页表寄存器-
前言 有了前文的铺垫,直接开始。 正文 一个典型的cpu 由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。 区别:内部总线实现cpu 内部各个器件之间的联系。 外部总线实现cpu和主板上其他器件的联系。 8086 cpu 有14个寄存器,他们的名称为: AX、BX、CX、DX、SI、DI、SP、IP
计算机的硬件组成: 计算机系统由软件和硬件组成的,硬件由控制器,运算器,存储器,输入输出设备五个分类组件所组成; 其中控制器和运算器集成到CPU CPU的功能: 程序控制:通过指令执行来控制程序的执行顺序,这是CPU的重要功能 操作控制:CPU产生每条指令的操作信号,并且将指令送到对应
目录内存中字的存储DS数据段寄存器和[address]mov、add、sub指令mov指令add与sub指令数据段栈CPU提供的栈机制将内存当成栈使用的例子栈顶越界的问题push、pop用于段寄存器、内存单元栈段 内存中字的存储 任何两个地址连续的内存的单元,N号单元和N+1号单元,可以将它们看成是两个字
目录CPU概述汇编指令例子物理地址段的概念 CPU概述 CPU由运算器、控制器、寄存器等组成,这些器件靠内部总线相连,外部总线则负责实现CPU和主板上其它器件的联系。 8086有14个寄存器,其中8个通用寄存器,寄存器都是16位的。 AX、BX、CX、DX用来存放一般性数据,被称为通用寄存器。这四个
C3.1.4 Exception generation and return armv8提供了3中软件中断产生的异常和3中系统调用。系统调用允许软件主动地通过特殊指令请求更加高异常等级的程序所提供服务。 C3.1.5 System register instructions 在armv7中体系结构中,通过访问cp15协处理器访问系统寄存器
流水线通用原理 在之前的SEQ模型中,由于一条指令的所有部分必须在一个时钟周期内完成,所以时钟周期无比的慢,所以系统的吞吐量就很慢,吞吐量即每秒能够处理的指令数量。 流水线系统的思路和工厂流水线一样,比如一个服装工厂流水线需要通过裁剪、缝合、贴商标、装袋这四个步骤,想象一下是
操作系统负责的内存管理: 1.内存空间的分配与回收 2.从逻辑上扩充内存空间(游戏GTA的大小超过60GB,按理来说这个游戏程序运行之前需要把60GB数据全部放入内存。然而,实际我的电脑内存才4GB,但为什么这个游戏可以顺利运行呢?一虚拟技术(操作系统的虚拟性)) 3.地址转换功能,逻辑地址→物理
堆栈段有3个主要的用途 1. 堆栈为函数内部声明的局部变量提供存储空间。按照C语言术语,这些变量被称为“自动变量”。 2. 进行函数调用时,堆栈存储与此有关的一些维护性信息,这些信息被称为堆栈结构,另外一个更常用的名字是过程活动记录。它包括函数调用地址(即所调用的函数结束后跳回
思路: 1.参考野火文档,了解TIM分为基本、通用、高级,后面的TIME在前一级的基础上加了功能 2.找这个外设挂载在哪个总线上,参考STM32f10x-中文参考手册的第2章存储器和总线构架 如上图,基本(TIM6、7)和通用定时器(TIM2、3、4、5)在APB1总线上, 高级定时器(TIM1、8)在APB2总线上; 这样就
虚拟机类型 栈式虚拟机 虚拟机会在其内部维护一个全局指令指针来指向下一条将要执行的指令所在位置。 堆栈机使用栈结构来作为暂存数据的容器,这使得我们无法对栈容器中的数据进行任意读取,我们需要遵循LIFO的数据操作原则来对数据进行处理。这导致无法从源代码直接生成最