指令集

【Hardware】i386、x86和x64的故事

牧云@^-^@ 提交于 2020-02-09 09:38:50
(1)x86的由来 x86架构 首度出现在1978年推出的Intel 8086中央处理器,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。在8086之后,Intel又推出了包括80186、80286、80386以及80486。 在设计上,这些后续的处理器使用的指令集都是在 8086 的基础上添加新支持的指令进行改进的,因此可以说都是 向下兼容(backward compatibility) 的,即能在8086上运行的程序在80486上也一定能运行。 向下兼容(Downward Compatibility) ,又称作 向后兼容(Backward Compatibility) ,指在 一个程序或者类库更新到较新的版本后,用旧的版本程序创建的文档或系统仍能被正常操作或使用 ,或在旧版本的类库的基础上开发的程序仍能正常编译运行的情况。例如较高档的计算机或较高版本的软件平台可以运行较为低档计算机或早期的软件平台所开发的程序 由于都是以86结尾(不过8088也是x86),所以把这一系列的指令集,称之为 x86指令集(架构) 。准确的来讲, x86 这一术语并不是指的某一个(具体CPU使用的)具体的指令集,而是在8086(的指令集)基础上发展而来的所有指令集的泛称 。 x86与CPU的位数无关,包括16位、32位、64位的CPU。 实际上

dos指令集

烂漫一生 提交于 2020-02-08 19:14:49
dir [盘符:][路径][文件名] [参数] 参数: /w:宽屏显示,一排显示5个文件名,而不会显示修改时间,文件大小等信息; /p:分页显示,当屏幕无法将信息完全显示时,可使用其进行分页显示; /a:显示具有特殊属性的文件; /s:显示 当前目录 及其子目录下所有的文件。 cd [路径],cd命令只能进入当前盘符中的目录,其中“cd\”为返回到根目录,“cd..”为返回到上一层目录。实现示例如下: md [盘符][路径],例如:md DOC_Text\Text;表示在当前盘符下建立一个名为Text目录。 edit [文件名],举例:edit myText.txt del命令删除目录。我们采用上面同样的方式创建了myText.mp3,现在我们删除上面创建的myText.txt文件 copy [源目录或文件] [目的目录或文件];例:copy E:\DOC_Text\Text下的myText.mp3文件到E:\DOC_Text\Text2盘下. rd [盘符][路径],例如:rd text2下的text2目录,此命令只能删除空目录。我们上步骤已经在text2目录下拷贝了myText.mpe文件 format命令格式化磁盘。含义:格式化命令,可以完成对软盘和硬盘的格式化操作。格式:format [盘符] [参数]举例:format a: /s/q;此命令将格式化a盘,其中参数

关于指令集的几点见解

为君一笑 提交于 2020-02-05 13:49:46
在这里不在赘述各种形式的指令集,仅简述指令集的几个特点: 指令集规定了处理器具备的算数运算,逻辑运算,控制转移等功能,确立了处理器编程模型。 指令集是软件和硬件的一个分水岭,对底层规定了微架构电路功能,对上为程序开发人员提供操作处理器的方法,对于程序员来说,深入这一层次已经十分不错了。 兼容性,在计算机领域导致这个问题的一般都是指令集不同,例如ARM架构和X86架构,它们的指令集不同,不能运行对方的可执行文件。(主要因为生成的可执行文件采用的指令集不同吧了) 集成开发环境包含一套完整的工具链,有编辑器,预处理器,编译器,汇编器,链接器,图形化界面以及其他一些辅助工具等,指令集通常和集成开发环境捆绑在一块的,不需要开发者干预。用高级语言编写的源程序,需要经过工具链的多步处理生成汇编程序,最后用指令集的二进制指令替换掉汇编指令,就合成了计算机可以执行的二进制序列。 来源: CSDN 作者: 嵌入式系统架构 链接: https://blog.csdn.net/weixin_46261723/article/details/104180042

ARM指令集---cmp、bne、beq

為{幸葍}努か 提交于 2020-02-05 05:16:44
ARM指令集---cmp、bne、beq (1)例一:cmp同bne搭配 cmp r1,r2 //这个cmp搭配下边的bne指令构成了如果r1≠r2则执行bne指令,跳转到copy_loop函数处执行。否则,就跳过下边 bne copy_loop//的bne指令向下执行。 public checkerboard_ram section CODE:CODE:NOROOT(2) thumb checkerboard_ram: ldr r1, [r0] ; Backup ldr r2, =0 str r2, [r0] dsb ldr r3, [r0] cmp r2, r3 bne checkerboard_fail ldr r2, =0xffffffff str r2, [r0] dsb ldr r3, [r0] cmp r2, r3 bne checkerboard_fail ldr r2, =0xaaaaaaaa str r2, [r0] dsb ldr r3, [r0] cmp r2, r3 bne checkerboard_fail ldr r2, =0x55555555 str r2, [r0] dsb ldr r3, [r0] cmp r2, r3 bne checkerboard_fail checkerboard_succeed: str r1, [r0] dsb ldr

Java - JVM

邮差的信 提交于 2020-02-04 14:09:09
前言 面向人群及参考书目 Java及JVM简介 Java发展的重大事件 虚拟机与Java虚拟机 虚拟机分为 系统虚拟机 和 程序虚拟机 。 系统虚拟机:Visual Box、VMware - 完全对物理计算机的仿真,提供一个可运行完整操作系统的软件平台。 程序虚拟机:Java虚拟机[JVM] - 专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为JVM字节码指令[这里不一定是Java字节码,只要是按照JVM规范编译出的字节码文件,Java虚拟机都可以解释运行]。 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。 Java虚拟机 Java虚拟机是一台直行JVM字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。 JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回收器,以及可靠的即时编译器。 Java技术的核心就是Java虚拟机(JVM,Java Virtual Machine),因为所有的Java程序都运行在Java虚拟机内部。 作用:Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编辑对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细的定义,如怎么取操作数,怎么处理操作数,处理结果放哪里。 特点 一次编译,到处运行。

语言跨平台的理解

烈酒焚心 提交于 2020-02-03 17:55:44
什么是平台 我们把 CPU处理器与操作系统的整体 叫平台。 CPU大家都知道,8086,Intel与AMD....,每个CPU使用或相同或不同的指令集。指令集就是cpu中用来计算和控制计算机系统的一套指令的集合。指令集又分为精简指令集(RISC)与复杂指令集(CISC), 每种cpu都有其特定的指令集。 操作系统是充当用户和计算机之间交互的界面软件,不同的操作系统支持不同的CPU,严格意义上说是不同的操作系统支持不同CPU的指令集。 语言跨平台 我们说的语言跨平台是编译后的文件跨平台,而不是源程序跨平台,如果是源程序,任何一门语言都是跨平台的语言了。所谓“不跨平台”,只是编译出来的目标代码是机器相关的而已。 C语言为什么不能实现跨平台 我们知道,只要是用标准C开发的程序,使用不同的编译器编译后的可执行文件是可以在对应平台运行的,比如windows可以使用VC编译,那编译后的.exe文件就可以在windows下运行;liunx下可以使用GCC编译,生成的可执行文件就可以在Liunx上运行。 到这里请大家思考一个问题:“VC编译的.exe能在Liunx上运行吗?”,显然是不能的,C语言最后编译出来的二进制文件,不同的CPU识别含义不同, 所以为什么说C语言不能实现跨平台运行,就是因为它编译出来的输出文件的格式,只适用于某种CPU,其他CPU不能识别。 java为什么能实现跨平台

Cobaltstrike系列教程(九)内置Socks与神器EW

拥有回忆 提交于 2020-01-26 03:07:50
0x000-前文 有技术交流或渗透测试培训需求的朋友欢迎联系QQ547006660 2000人网络安全交流群,欢迎大佬们来玩 群号820783253 0x001-Socks概念 目前利用网络防火墙将组织内部的网络结构与外部网络如 INTERNET 中有效地隔离开来,这种方法正变得逐渐流行起来。这些防火墙系统通常以应用层网关的形式工作在网络之间,提供受控的 TELNET 、 FTP 、 SMTP 等的接入。 SOCKS 提供一个通用框架来使这些协议安全透明地穿过防火墙。 说的简单明了一点,在渗透测试中,我们使用socks技术,可以穿透进入目标机的内网,从而扩大我们的战果 0x002-Cobaltstrike自带Socks功能 选择一个beacon,右键,中转–>SOCKS Server,或使用命令socks [port] 弹出一个窗口,按要求配置好代理端口 如图,成功开启socks 4,连接我们teamserver的5126端口,即可进入目标机内网~ 0x003-使用ew+SocksCap穿透到目标机内网 ①Earthworm(下载见文末) Ew(Earthworm)是一款当之无愧的内网穿透大杀器,应用的平台非常广泛,包括 ew_for_Win.exe 适用各种Windows系统 ( X86指令集、X64指令集 ) Windows7、Windows XP ew_for_Linux32

ARM 汇编基础

你。 提交于 2020-01-19 18:47:10
转载连接: 1 ARM汇编以及汇编语言基础介绍 2 ARM汇编中的数据类型 3 ARM汇编常用指令集 4 ARM汇编内存访问相关指令 5 ARM汇编之连续存取 6 ARM汇编之条件执行与分支 7 ARM汇编之栈与函数 英文原文链接: https://azeria-labs.com/arm-data-types-and-registers-part-2/ 本文只是转载部分内容,具体请参考原文。 1. ARM汇编基础介绍 1.1 ARM VS. INTEL ARM处理器Intel处理器有很多不同,但是最主要的不同怕是指令集了。Intel属于复杂指令集(CISC)处理器,有很多特性丰富的访问内存的复杂指令集。因此它拥有更多指令代码以及取址都是,但是寄存器比ARM的要少。复杂指令集处理器主要被应用在PC机,工作站以及服务器上。 ARM属于简单指令集(RISC)处理器,所以与复杂指令集先比,只有简单的差不多100条指令集,但会有更多的寄存器。与Intel不同,ARM的指令集仅仅操作寄存器或者是用于从内存的加载/储存过程,这也就是说,简单的加载/存储指令即可访问到内存。这意味着在ARM中,要对特定地址中存储的的32位值加一的话,仅仅需要从内存中加载到寄存器,加一,再从寄存器储存到内存即可。 简单的指令集既有好处也有坏处。一个好处就是代码的执行变得更快了。

随感

戏子无情 提交于 2020-01-17 17:01:05
处理器架构 :一般就是指的是处理器的硬件架构,称为微架构,就是一堆硬件电路,用来实现指令集所规定的操作运算;看了这个你就理解其实硬件本质上就是为了某种规则服务的;如果木头这个材料有两种状态的转换,我们也可以用木头来做硬件材料来实现一些运算逻辑; 1、ARM系列 2、x86系列/Atom处理 3、MIPS系列 指令集: 指令集可以理解为我们设计的一套运算规则,这个规则是可以给CPU来使用的,CPU的硬件设计上也能达到这个指令集所要求的运算方式;包含两部分(汇编语言形式、二进制机器码格式),CPU执行的是二进制代码,汇编是给人能看懂的低级编程语言,每条汇编指令都有对应的机器码指令。( 这里插一句题外话,其实指令集谁都可以设计一套,不一定就只有intel和arm等大厂能搞,但关键的问题在于别人先搞了一套指令集,而且推广的很好,其他很多东西都开始基于他这个指令集开始开发对应的编译器、操作系统、程序语言、应用程序了,先入为主了;你再弄一套,除非你的东西牛到别人无法超越,否则没人搭理你,大家都懒,不想在你这里在折腾一遍他们的东西了 ) 汇编器: 完成汇编语言和二进制机器码(机器语言)的转换就叫做 汇编器 机器语言:机器语言是机器指令的集合,是硬件CPU能读懂的机器指令 汇编语言: 汇编语言就是我们人能读懂和理解的编程语言,汇编语言的主体是汇编指令,汇编指令和机器指令是一一对应的; 存储器

CPU指令集架构基础学习

你说的曾经没有我的故事 提交于 2020-01-14 23:17:51
在最初接触C/C++的时候,我对程序编译后的指令非常着迷,循序渐进的学习了C/C++语言编译器生成汇编语言的模式。 就像是语言翻译一样,我们需要做到直接阅读x86等汇编代码,并且能够将其还原成原始的C/C++语句,这是学习逆向最有效的方法。 CPU是执行程序机器码的硬件单元,相关概念包括以下几项: **指令码:**是CPU处理的底层命令,典型的底层命令有:将数据在寄存器之间转移,操作内存,计算数值等指令,每一类CPU都有自己的指令集架构,CPU品牌有Intel,AMD,IBM和Cyrix,IDT,VIA威盛,国产龙芯等。 **汇编语言:**为了让程序员少掉头发而创造出来的,是人类可以易于读写。 **CPU寄存器:**每一种CPU都有其固定的通用寄存器(GPR),x86的CPU中有8个GPR,x64里面有16个GPR,ARM中有16个GPR,CPU寄存器就是一种存储单元,他可以无差别存储所有类型的临时变量,如果写一个程序只用到了8个32位变量,CPU自带的寄存器就可以完成任务。 需要一种将高级编程语言转成CPU可以处理的底层机器语言,这种程序就是编译器(Compiler)。 0x01 指令集架构 x86的指令集架构中,opcode(汇编指令对应的机器码)长度是不同的。 ARM属于RISC(精简指令集)架构 CPU,这种指令集在设计之初就力图保持各个opcode长度一致,最初的时候