郑重声明:转载自http://blog.csdn.net/zhongjin616/article/details/18765301 1> 首先讨论各种单片机与操作系统的关系 说到单片机,大家第一时间想到的应该是51单片机,对吧.不错,更高级一点的AVR,把他称为单片机,我们也还觉得可以接受.那么再高级一点的ARM7,8086,80386,Core i3,Athlon 等等我们更习惯称他们为CPU,因为学习计算机原理的时候都是这么叫的,但按照单片机的定义,他们也是归属于单片机.这也不怪大家,中国的…
Instruction set Y86 指令集 运算符:addl, subl, andl, and xorl 跳转符:jmp,jle,jl,je,jne,jge, andjg 条件符:cmovle, cmovl, cmove, cmovne, cmovge,cmovg 其它:call , pushl,popl, halt Registers %eax, %ecx, %edx, %ebx, %esi, %edi, %esp, %ebp 当中栈指针存在%esp PC存放当前指令的地址 Conditi…
时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍.状态.机器周期和指令周期,接下来我们分别加以说明. 节拍与状态:    我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2). 机器周期:   MCS-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为S1-S6,而一…
指令集是CPU体系架构的重要组成部分.C语言的语法是对解决现实问题的运算和流程的方法的高度概况和抽象,其主要为算术.逻辑运算和分支控制,而指令集就是对这些抽象的详细支持,汇编仅仅只是是为了让开发者更好地记住指令,但它跟CPU所认的机器码事实上是一一相应的,因此汇编也是低级语言. CPU的指令运行一般包含取指.译码和运行,这是经典的三级指令运行流水线,教科书上往往以这三种过程来描写叙述,arm7也是.可是现代的CPU设计往往使用更广泛使用的5级流水线,也就是分为取指.译码.运行.訪存和回写.为什么…
本文导读: 前言 如何保障线程安全 CAS原理剖析 CPU如何保证原子操作 解密CAS底层指令 小结 朋友,文章优先发布公众号,如果你愿意,可否扫文末二维码关注下? 前言 日常编码过程中,基本不会直接用到 CAS 操作,都是通过一些JDK 封装好的并发工具类来使用的,在 java.util.concurrent 包下. 但是面试时 CAS 还是个高频考点,所以呀,你还不得不硬着头皮去死磕一下这块的技能点,总比一问三不知强吧? 一般都是先针对一些简单的并发知识问起,还有的面试官,比较直接: 面试官…
Intel处理器都支持Turbo和EIST,且一般情况下,各家厂商在BIOS中都会设置EIST和PState的开关,那么这些开关与CPU的频率的关系是什么呢?今天对此做个总结: 按照国际惯例,本次梳理将会解决下列问题: 1. EIST是什么? 2. EIST与Turbo与PState和CPU频率得关系 3. 如何在linux下使用Pwr工具查看CPU频率,以及Linux系统安装MSR相关的驱动接口 4. BIOS关闭了EIST,为何Linux系统下CPU主频会降低? EIST是什么? EIST-…
去年折腾的一个东西,之前 blog 里也写过,不过那时边琢磨边写,所以比较杂乱,现在简单完整地讲解一下. 前言 当时看到一本虚拟机相关的书,正好又在想 JS 混淆相关的事,无意中冒出个问题:能不能把某种 CPU 指令翻译成等价的 JS 逻辑?这样就能在浏览器里直接运行. 注意,这里说的是「翻译」,而不是模拟.模拟简单多了,网上甚至连 JS 版的 x86 模拟器都有很多. 翻译原则上应该在运行之前完成的,并且逻辑上也尽可能做到一一对应. 为了尝试这个想法,于是选择了古董级 CPU 6502 摸索.…
从 Java 代码到 CPU 指令 我们都知道,编写的 Java 代码,最终还是要转化为 CPU 指令才能执行的.为了理解 Java 内存模型的作用,我们首先就来回顾一下从 Java 代码到最终执行的 CPU 指令的大致流程: (1)最开始,我们编写的 Java 代码,是 *.java 文件: (2)  把我们写好的*.java文件,通过javac命令编译(包含词法分析.语义分析等步骤)成字节码文件,也就是我们常说的.class文件. (3)JVM 会分析刚才生成的字节码文件(*.class),…
我们都知道所有的程序最终都是一系列计算机能够识别的指令和数据,通过执行这些指令来控制整个计算机. 而CPU就是负责读取和解释执行这些指令的,CPU主要包括运算器.控制器和寄存器,控制器负责把指令.数据读入寄存器,而运算器则负责运算寄存器中的数据. 那么CPU读取的指令是在哪里存储着的呢?就是在内存中,内存主要就是负责存储运行中程序的数据和指令. 但由于内存容量有限,成本高,最重要的是断电之后里面的一切数据都会丢失,所有并不能作为我们永久存储程序的地方,而硬盘的价格便宜.容量大.断电后仍能保存数据…
MCS-51的CPU由 运算部件和 控制部件构成 运算部件 包括ALU.位处理器.累加器A.暂存器.程序状态寄存器PSW.寄存器B 累加器A 一个8位累加器,A的进位标志Cy同时是位处理器的一位累加器 寄存器B 执行乘.除法操作,不执行时可当作普通寄存器使用 程序状态寄存器PSW 8位可读写寄存器,不同位包含程序不同信息 PSW   D7   6   5   4     3   2  1  0    D0H Cy AC F0 RS1 RS0 OV -   P  PSW.7-Cy:进位标志,在执行…