精简指令集和复杂指令集及指令格式(代码片段)

kele-dad kele-dad     2022-12-13     293

关键词:

5.1 介绍

  • CISC:复杂指令集
  • RISC:精简指令集

5.1.1 CPU 模型

  • 复杂指令集和精简指令集取决于CPU 中的控制器的 N
  • N=111(8051) 复杂指令集
  • N=34 (ARM) 精简指令集
  • SWAP(1) <---> MOV (3) 2/8 定律

5.1.2 编程语言

  • 编程语言分为编译型和解释行
    • 编译型:即本地语言,直接生成机器码
    • 解释型:JAVA 语言,一次编译到处运行(JVM 本身是一个进行,去分配内存空间,将字节码转成机器码,用户程序含在此进程中)
      • 源文件--》编译器--》字节码--》JVM(解释)--》机器码

5.1.3 RISC 架构的特点

  • 采用固定长度的指令格式
  • 使用单周期指令,便于流水线操作
  • 大量使用寄存器,采用 LS 结构访问存储器
  • 采用 CISC 架构的处理器具有相反的特征, 不过功能更强大。 采用 CISC 架构的处理器有 X8

5.2 指令格式

5.2.1 指令格式

  • <指令助记符><执行条件>S    <目标寄存器>,<操作数 1 的寄存器>,<第 2 操作数>
  • 注意:
    • 指令助记符就是指令
    • 执行条件可以写也可以不写,不写的话,系统会有个默认的执行条件添加
    • < >号内的项是必需的
    • 号内的项是可选的
    • S: 是否影响 CPSR 寄存器的值,书写时影响 CPSR,不写的话不会影响 CPSR
      • 如下面的 SUBS,本身是 SUB 指令,加了 S 后就影响到 CPSR 的标志位了
    • CMP 不需要增加"S"就可改变相应的标志位
  • 例如:
  • SUBS PC,LR,#4
    MOV R0,#0x00
    LDR R0,[R1]
  • 所有指令都是 32bit,load/store 体系结构(对存储器的访问只能使用加载和存储指令实现)

5.2.2 条件码和机器码

在 ARM 状态,所有的指令都可以按照 CPSR 状态码和指令条件字段的状态来有条件地执行。
此字段(位[31:28])确定了在什么情况下哪一个指令被执行。如果 C,N,Z 和 V 标志位的状态符合字段的条件码,将执行指令,否则忽略不执行。
有 16 种可能的条件,每种表示为在指令助记符后附加两个字符后缀。例如,一个分支(汇编语言中的 B)跳转指令变成 BEQ 为“如果相等则分支跳转”,这意味着只有 Z 标志位被置位了才会执行分支跳转。
在实际应用当中,将会使用到 15 种不同的条件:如下表所列,保留第 16 种(1111),并且一定不要使用。

  技术图片

使用指令条件码可实现高效的逻辑操作, 提高代码执行效率。 例如:

if(a > b) a++;     CMP R0,R1
else b++;          ADDHI R0,R0,#1
                   ADDLS R1,R1,#1

MOV R0,#0x00 <--> MOVAL R0,#0x00

               

机器码: MOV R0,#0x00 <------> 1110 001 1101 0 0000....000 -->0xE3A00000
数据存储指令的机器码是 1110 001,1110 是条件码,

MOV 指令的机器码是 1101

0 为 S 的机器码,0 为禁用,1 为启动

0000...000 为R0,#0x00

技术图片

 

android逆向之--------常见davlik字节码解释(代码片段)

破解流程破解流程相关知识寄存器复杂指令集和精简指令集jvm和davlik的一些区别常见Davlik字节码解释破解程序分析修改smail文件重新签名破解流程破解Android程序流程:反编译—>分析–>修改–>回编译–>签名,这... 查看详情

指令集和解释器(代码片段)

一、字节码与指令集https://blog.csdn.net/hudashi/article/details/7062675二、指令与指令解码所有代码:https://github.com/zxh0/jvmgo-book本章不会把指令文件全部列出,请观看源码1、Instruction接口在jvmgoinstructionsase文件夹下创建instruction.go文件1pac... 查看详情

arm精简指令集与复杂指令集

...端、平板成为同一个硬件下的系统。而ARM使用的就是CISC精简指令集,大学汇编没有学好,只能在此补上...??CISCComplexInstructionSetComputer即为复杂指令集,CISC的硬件指令更多,因此它的兼容性更好,执行复杂操作更快,因此在游戏... 查看详情

idaproarm指令集和thumb指令集的切换(代码片段)

... 类似下面这样: B6FC7DD0明显反汇编错了,成SVCMI指令了,解决方法也很简单,这里记录一下!在IDA中可以Edit->segments->ch 查看详情

amd64和x86_64

  CPU的架构常用的有:精简指令集和复杂指令集系统精简指令集:你手机上的ARM复杂指令集:AMD、Intel的X86架构(AMD64、X86-64、x86(32位)) 查看详情

mips汇编指令集(代码片段)

MIPS汇编MIPS指令集MIPS指令集属于精简指令集MIPS的所有指令都是32位,指令格式简单,而X86的指令长度不是固定的。简单的指令和格式易于译码和流水线操作,但是代码密度不高,导致二进制文件大MIPS有32个通用寄... 查看详情

jvm指令集及各指令的详细使用说明

一、JVM指令助记符1)操作数栈变量到操作数栈:iload,iload_,lload,lload_,fload,fload_,dload,dload_,aload,aload_操作数栈到变量:istore,istore_,lstore,lstore_,fstore,fstore_,dstore,dstor_,astore,astore_常数到操作数栈:bi 查看详情

1.计算机相关

...元和主存储器。  2.CPU架构  CPU的指令集主要由精简指令集(RISC)和复杂指令集(CISC)组成。  (1)精简指令集(RISC,ReducedInstructionSetComputer):指令集精简,指令运行时间短、动作简单、执行效能好,需要多个指... 查看详情

stm32学习-嵌入式微处理器指令集架构(代码片段)

...研究人员还有开源社区等可以分成复杂指令集(CISC)、精简指令集(RISC)、超长指令字指令集(VLIW)等VLIW:将多条指令放入一个指令字中来实现指令级并行处理,从而提高运算效率。CISC:通过设置一些功能复杂的指令,把一... 查看详情

简化指令与复杂指令的区别

...0.html泡1杯茶复杂指令集:1、去泡茶;2、哥,茶泡来了;精简指令集:1、去;2、拿杯子;3、放茶叶;4、泡茶;5、拿来。显然复杂指令速度快效率高;泡50杯茶复杂指令集:1、去泡茶;2、哥,茶泡来了;3、去泡茶;4、哥,茶... 查看详情

鲲鹏920流水线

...有别于Intel、AMDCPU采用的CISC复杂指令集,ArmCPU采用RISC精简指令集(reducedinstructionsetcomputer,精简指令集计算机)。传统的CISC体系由于指令集庞大,指令长度不固定,指令执行周期有长有短,使指令译码... 查看详情

未来是属于arm为代表的精简指令集还是x86为代表的复杂指令集?

分析一: 这里简单来谈一下,ARM和X86之间为什么不太具有可比性的问题。要搞清楚这个问题首先要明白什么是架构,之前也有很多人提到了架构不同,但架构是什么意思?它是一个比较抽象的概念,不太容易用几句话就解释... 查看详情

组成原理-指令指令系统(代码片段)

文章目录1指令格式1.1定长操作码1.2变长操作码1.3相关例题2寻址方式2.1指令寻址2.2数据寻址补充:堆栈寻址的执行细节补充:指令中的操作数地址2.3相关例题3汇编指令3.0Intel格式和AT&T格式3.1数据传送指令3.2算术和逻辑... 查看详情

arm概论(advancedriscmachines)

...的一员,具有比较低的电源消耗和良好的性价比,基于(精简指令)RISC结构,指令集和相关的译码机制与微程序控制的复杂指令系统的计算机相比要相对简单,这使得它拥有比较高的指令处理能力和实时中断响应能力。指令集... 查看详情

合理科学地设计指令格式(代码片段)

计算机的指令格式与机器的字长、存储器的容量及指令的功能都有很大的关系。从便于程序设计、增加基本操作并行性、提高指令功能的角度来看,指令中应包含多种信息。但在有些指令中,由于部分信息可能无用,这将浪费指... 查看详情

x86指令格式(代码片段)

 学习于逆向工程核心原理IA-32指令章节格式 x86指令格式 指令前缀 出现特定操作码时用作补充说明,图中的冒号前的64就是指令前缀  操作码 实际的指令,如图中的FF、89、80都是操作码 ModR/M辅助说... 查看详情

龙芯cpu有啥特点?

...,处理数据速度较慢,PC中Pentium的结构都为CISCCPU。RISC是精简指令集CPU,指令位数较短,内部还有快速处理指令的电路,使得指令的译码与数据的处理较快,所以执行效率比CISC高,不过,必须经过编译程序的处理,才能发挥它的... 查看详情

软考重点2计算机系统

...统一、计算机指令系统1.指令系统类型CISC复杂指令集RISC精简指令体2.CPU核心部件运算器算术逻辑单位ALU累加寄存器AC(数据寄存器)控制器程序计数器PC指令寄存器IR3.指令系统4.指令地址结构5.寻址方式二、存储系统一、... 查看详情