x86-64整数寄存器】的更多相关文章

关于xcode 5.1   x86 - 64 编译问题   坐等了N久,终于IOS 7.1 发布了,作为一个果粉,忍不住第一时间升级了.结果用设备测试的时候,出问题了,一直检测不到设备,哈哈,纠结了半天,才想到原来是7.1 问题了.原来Xcode版本不得低于设备版本,IOS7.1 对应的是 Xcode 5.1,果断的升级Xcode.   Xcode5.1 完成之后,打开以前的项目,各种wearing,纠结....然后仔细看了一下官方的升级文档,原来是include 64 了.找到问题了,那就解决…
SOC固件(BIOS)开发: 1.熟悉硬件原理图:要弄清楚pin脚的功能: 2.配置GPIO引脚,配置成Native功能还是GPIO功能(如果是配置成GPIO,需要在code里面显式的使用): 3.硬件驱动是通过controller的寄存器来访问device的:以IIC为例,如果SOC有IIC的controller,固件程序只需要配置IIC的GPIO为native功能,然后code里面通过读写IIC controller的寄存器就可以完成对IIC device的访问(IIC的硬件时序由硬件con…
常常搭建nginxserver,可是好像每次的情况都不同,这次具体记录这个过程: 平台:unbutu 10.04 内核:2.6.32-33-generic 1, 编译环境搭建. sudo apt-get install g++ sudo apt-get -y install autoconf automake build-essential libass-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libvdpau-dev libvor…
32位dbg中编辑的: 7711E9D3 | 6A | | 7711E9D5 | E8 | 7711E9DA | | | 7711E9DE | CB | ret far | 6A E8 CB 64位dbg中获取的: :B8 | | | push rax | : | push r8 | : | push r9 | : | push r10 | : | push r11 | : | push r12 | : | push r13 | : | push r14 | r14:"minkernel\\nt…
1. 安装gcc,g++,make等开发环境 yum groupinstall "Development Tools" 2. 安装boost yum install boost boost-devel boost-doc 备注:默认的安装路径在/usr/lib64目录下 3. 例子 #include <boost/thread.hpp> #include <iostream> void task1() { // do stuff std::cout <&l…
X86寄存器 ·x86寄存器分类: 8个通用寄存器:EAX.EBX.ECX.EDX.ESI.EDI.ESP.EBP 1个标志寄存器:EFLAGS 6个段寄存器:CS.DS.ES.FS.GS.SS 5个控制寄存器:CR0.CR1.CR2.CR3.CR4 8个调试寄存器:DR0.DR1.DR2.DR3.DR4.DR5.DR6.DR7 4个系统地址寄存器:GDTR.IDTR.LDTR.TR 其他寄存器:EIP.TSC等.   一.          通用寄存器 32位 16位 8位 EAX AX AH…
其实很久之前就学完了实模式了,但是一直没有总结,感觉现在直接在书上做笔记的弊端就是有些知识点不能很很深刻地记下来(毕竟手写最明显的优点就是能深刻地记住知识,但是就是用太多的时间罢了).一下内容都是一些这本书里面的知识和笔记. ★PART1:进制计数: 1.  二进制到十进制的相互转换(带权乘法) a. 二进制转十进制,只要把每一个位都乘以2的相应阶数就可以了,(无论是整数部分还是小数部分) b. 比如:10110001B=1*27+0*26+1*25+1*24+0*23+0*22+0*21+1*…
应用软件开发的64 位WINDOWS 系统环境兼容性 1. 64 位CPU 硬件 目前的64位CPU分为两类:x64和IA64.x64的全称是x86-64,从名字上也可以看出来它和 x86是兼容的,原先的32位程序可以在x64上运行得很好,这也就是为什么在x64的CPU上 能够成功安装32位的Windows操作系统.现在市场上卖的家用电脑的CPU通常都是x64. 两家顶级CPU公司Intel和AMD分别推出了EM64T(Extended Memory 64 Technology)和 AMD64(…
用VC进行64位编程 分类: C/C++2014-04-30 15:14 532人阅读 评论(0) 收藏 举报 本文转自:http://www.usidcbbs.com/read-htm-tid-5247.html   献给c/c++的同学.它包括创建一个64位安全的应用程序或者是从32位迁移到64系统的所有步骤.该介绍一共包括28课,涉及的内容有64位系统,64位应用程序的构建,如何找64位代码的问题和如何优化.第一课:64位的系统是什么 在写这个课程的时候,有2个流行的微处理器的64位架构:…
简介 通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果.除此之外,它们还各自具有一些特殊功能.通用寄存器的长度取决于机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确.合理地使用它们. 16位cpu通用寄存器共有 8 个:AX,BX,CX,DX,BP,SP,SI,DI. 八个寄存器都可以作为普通的数据寄存器使用. 但有的有特殊的用途:AX为累加器,CX为计数器,BX,BP为基址寄存器,SI,DI为变址寄存器,BP还可以是基 指针,S…
FASM 第二章 - 2.1 x86 体系指令 Author: 徐艺波  From: xuyibo.org  Updated: 2008-04-17   官方论坛   本站软件反馈.软件开发交流.   邮件通知   当更新时自动发送邮件通知.   评论本文   有什么建议或评论,可以贴一下.   捐助   你的支持,让我们做的更好. 2.1 x86 体系指令 2.1.1 数据传送指令2.1.2 类型转换指令2.1.3 二进制算术指令2.1.4 十进制算术指令2.1.5 逻辑指令2.1.6 控制转…
32位和64位系统在计算机领域中常常提及,但是仍然很多人不知道32位和64位的区别,所以本人在网上整理了一些资料,并希望可以与大家一起分享.对于32位和64位之分,本文将分别从处理器,操作系统,JVM进行讲解. IA介绍 简介 说到处理器,大家用的最多的莫过于Intel的处理器了,所以本文主要从Intel的处理器讲解32位和64位的处理器之分.  通常将采用Intel(英特尔)处理器的服务器称之为IA(IntelArchitecture)架构服务器,又称 CISC(ComplexInstruct…
由8086/8088.x86.Pentium发展到core系列短短40多年间,处理器的时钟频率差点儿已接近极限.尽管如此,自从86年Intel推出386至今除了添加一些有关流媒体的指令如mmx/sse之外.其它新增的大多数指令都能够从最初的指令集中组合实现相同的功能,整个编程模型维持了约有20多年. 1. 处理器体系结构 1.1. 处理器简要结构 我们都知道CPU的根本任务就是运行指令,对计算机来说终于都是一串由"0"和"1"组成的序列. CPU从逻辑上能够划分成3…
序言 前段时间,我连续写了十来篇CPU底层系列技术故事文章,有不少读者私信我让我写一下CPU的寄存器. 寄存器这个太多太复杂,不适合写故事,拖了很久,总算是写完了,这篇文章就来详细聊聊x86/x64架构的CPU中那些纷繁复杂的寄存器们. 长文预警,时速较快,请系好安全带-起飞~ 自1946年冯·诺伊曼领导下诞生的世界上第一台通用电子计算机ENIAC至今,计算机技术已经发展了七十多载. 从当初专用于数学计算的庞然大物,到后来大型机服务器时代,从个人微机技术蓬勃发展,到互联网浪潮席卷全球,再到移动互…
整理的X86_64/X86汇编.寄存器.C内嵌汇编笔记,主要用于查阅使用. 目录 一.汇编语言 二.指令 数据传输指令 栈操作指令 push pop 运算指令 位操作 比较操作指令 标志寄存器 流控制指令 三.伪指令 .equ .rept .endr .lcomm .globl .type .ascii .byte .section 变量 四.X86_64寄存器 五.常见汇编结构 1. 函数调用传参 使用寄存器传参 使用栈传参 2. 变量赋值 3. 指针 4. 结构 5. 循环 6. if语句…
x86的指令集可分为以下4种: 通用指令 x87 FPU指令,浮点数运算的指令 SIMD指令,就是SSE指令 系统指令,写OS内核时使用的特殊指令 下面介绍一些通用的指令.指令由标识命令种类的助记符(mnemonic)和作为参数的操作数(operand)组成.例如move指令: 指令 操作数 描述 movq I/R/M,R/M 从一个内存位置复制1个双字(64位,8字节)大小的数据到另外一个内存位置 movl I/R/M,R/M 从一个内存位置复制1个字(32位,4字节)大小的数据到另外一个内存…
因为要了解多线程,自然少不了一些硬件知识的科普,我没有系统学习过硬件知识,仅仅是从书上以及网络上看来的,如果有错误请指出来. CPU,全名Central Processing Unit(中央处理器).这是一块超大规模的集成电路,包含上亿的晶体管,是一台计算机的运算核心(Core)和控制核心(ControlUnit).它的功能主要是解释计算机指令以及处理计算机软件中的数据. 它的主要构成是:运算器.控制器.寄存器 运算器:可以执行定点或浮点算术运算操作.移位操作以及逻辑操作,也可执行地址运算和转换…
原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软件已经变得比以前更为重要.在本文中,您将学习如何在进行语句声明.赋值.位移.类型转换.字符串格式化以及更多操作时,防止出现可移植性缺陷. 0 评论: Harsha S. Adiga, 软件工程师, IBM 2006 年 5 月 18 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个…
x86的通用寄存器有eax.ebx.ecx.edx.edi.esi.这些寄存器在大多数指令中是可以任意选用的,比如movl指令可以把一个立即数传送到eax中,也可传送到ebx中.但也有一些指令规定只能用其中某些寄存器做某种用途,例如除法指令idivl要求被除数在eax寄存器中,edx寄存器必须是0,而除数可以在任意寄存器中,计算结果的商数保存在eax寄存器中,而原来的被除数被覆盖掉,余数保存在edx寄存器中.也就是说,通用寄存器对于某些指令而言不是通用的. x86的特殊寄存器有ebp.esp.e…
X86-64寄存器和栈帧 概要 说到x86-64,总不免要说说AMD的牛逼,x86-64是x86系列中集大成者,继承了向后兼容的优良传统,最早由AMD公司提出,代号AMD64:正是由于能向后兼容,AMD公司打了一场漂亮翻身战.导致Intel不得不转而生产兼容AMD64的CPU.这是IT行业以弱胜强的经典战役.不过,大家为了名称延续性,更习惯称这种系统结构为x86-64. X86-64在向后兼容的同时,更主要的是注入了全新的特性,特别的:x86-64有两种工作模式,32位OS既可以跑在传统模式中,…
64位版本为什么叫amd64,而不是intel64? 首先了解下常见的几个架构: X86是一个指令集,是刚有个人电脑时候的什么8086,286,386的那个兼容的指令集.   “x86-64”,有时会简称为“x64”,是64位微处理器架构及其相应指令集的一种,也是Intel x86架构的延伸产品.“x86-64”1999由AMD设计,AMD 首次公开 64 位集以扩充给 IA-32,称为 x86-64(后来改名为 AMD64). 其后也为Intel所采用,现时英特尔称之为“Intel 64”.…
CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是  CISC要用最少的机器语言指令来完成所需的计算任务.RISC和CISC是设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构.操作运行.软件硬件.编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大. x86架构采用CISC,而ARM采用RISC. ARM成立于19…
重温下CPU是什么 中央处理单元(CPU)主要由运算器.控制器.寄存器三部分组成.运算器起着运算的作用,控制器负责发出CPU每条指令所需要的信息,寄存器保存运算或者指令的一些临时文件以保证更高的速度. CPU有着处理指令.执行操作.控制时间.处理数据四大作用,打个比喻来说,CPU就像我们的大脑,帮我们完成各种各样的生理活动.因此如果没有CPU,那么电脑就是一堆废物,无法工作.移动设备其实很复杂,这些CPU需要执行数以百万计的指示,才能使它向我们期待的方向运行,而CPU的速度和功率效率是至关重要的…
1 32位Intel的CPU通用寄存器 32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX):2个变址和指针寄存器(ESI和EDI):2个指针寄存器(ESP和EBP):6个段寄存器(ES.CS.SS.DS.FS和GS):1个指令指针寄存器(EIP):1个标志寄存器(EFlags). 其中4个数据寄存器和2个编址和指针寄存器以及2个指针寄存器也是我们常说的通用寄存器. 1.1 数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需要占用总线和访问…
 64位BASM学习随笔(一) Delphi的BASM一直是我最喜爱的内嵌汇编语言,同C/C++的内联汇编相比,它更方便,更具灵活性,由于C/C++的内联汇编仅仅能是或插入式的汇编代码,函数花括号背后隐藏的函数框架,限制了汇编代码的发挥,如不管有无參数和局部变量,总是有个栈框架,更烦人的是仅仅要你在函数中使用了esi,edi,ebx寄存器.就自己主动给你保存和恢复,使得这些寄存器没法在函数之间传递信息等.而Delphi的BASM能够是插入式的汇编代码,也但是全然的汇编方法.在全然的汇编方法下…
RV64I是RV32I的超集,RV32I是RV64I的子集.RV64I包括RV32I的所有40条指令,另外增加了12条RV32I中没有的指令,还有三条移位指令(slli, srli,srai)也进行小小的改动. 在RV64I中,整数寄存器是64位的,即xlen=64,所以每条指令中的寄存器都是64位运算,立即数符号位扩展也是到64位. 下面介绍一下RV64I中新增的指令,对于同一条指令在RV64I和RV32I中,操作的不同,会在RV32I指令集的介绍中给出备注. ld ld rd, offset…
RV32I是32位基础整数指令集,它支持32位寻址空间,支持字节地址访问,仅支持小端格式(little-endian,高地址高位,低地址地位),寄存器也是32位整数寄存器.RV32I指令集的目的是尽量简化硬件的实施设计,所以它只有40条指令(备注,之前是47条指令,在最新的规范中,一些csr指令被放在扩展指令集中).这40条指令几乎能够模拟其它任何扩展指令(除了A扩展指令,因为原子指令需要硬件支持).如果用更简单的实现方式,比如对于ECALL和EBREAK指令,调用时候,系统总是自陷(trap)…
概述 之所以会写这个,主要是因为最近做的一个项目碰到了一个移位的问题,因为位移操作溢出导致结果不准确,本来可以点到为止,问题也能很快解决,但是不痛不痒的感觉着实让人不爽,于是深扒了下个中细节,直到看到Intel的指令规约才算释然,希望这篇文章能引起大家共鸣. 本文或许看起来会比较枯燥,不过其实认真看挺有意思的,如果实在看不下去,告诉你一个极简路径,先看下下面的Demo,然后直接跳到后面的小结,如果懂了,别忘记顺便点个赞,请叫我雷锋,哈哈. Demo 还是从一个简单的例子说起 大家可以尝试做几个改…