热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

计组——大小端存储_堆栈_执行(逆)波兰式

文章目录一、多字节存储方式Ⅰ、大端存储Ⅱ、小端存储二、CPU内部的数据存储三、堆栈型架构的存储Ⅰ、优点Ⅱ、应用——执行(逆)波兰式1、波兰式的转换2、堆栈执行(逆)波兰式完一、多字

文章目录

  • 一、多字节存储方式
    • Ⅰ、大端存储
    • Ⅱ、小端存储
  • 二、CPU内部的数据存储
  • 三、堆栈型架构的存储
    • Ⅰ、优点
    • Ⅱ、应用——执行(逆)波兰式
      • 1、波兰式的转换
      • 2、堆栈执行(逆)波兰式


一、多字节存储方式

大多数现有体系结构采用按字节寻址,分为大端存储和小端存储

端(Endianness)代表了计算机中存储多字节数据的顺序

Ⅰ、大端存储

大端(Big Endian):低位有效字节存储在高位地址

优点:

  • 更加自然:字节顺序和地址顺序一致
  • 可以快速确定数字的符号(符号位在最低地址)
  • 字符串的存储顺序和整数一致:“ABC” = 0x41 0x42 0x43 => 0x414243

Ⅱ、小端存储

小端(Little Endian):低位有效字节存储在低位地址

优点:
高位数字转为低位更方便:32位数字0x12345678和低16位0x5678的地址是一样的

大端存储和小端存储代表的字节顺序而不是位顺序

二、CPU内部的数据存储

CPU内部的数据存储架构有以下几种

  • 堆栈型架构:操作数隐式放置在堆栈中
  • 累加器型架构:当指令对应的运算涉及两个操作数时,其中一个操作数隐式放置在累加器寄存器中
  • 通用寄存器型架构:操作数保存在寄存器中,又可细分为:存储器-存储器型,多个操作数放置在内存;寄存器-存储器型,操作数放置在寄存器和存储器中;取-存型所有操作数放置在寄存器中

各架构的汇编操作示例:

假设要实现地址x的存储单元和地址y的存储单元中数据相加,写入地址z的存储单元

;堆栈型架构
PUSH x
PUSH y
ADD
POP z;累加器型架构
LOAD x
ADD y
STORE z;通用寄存器型架构(存储器-存储器型)
ADD ax, x, y
STORE ax, z;通用寄存器型架构(寄存器-存储器型)
LOAD ax, x
ADD ax, y
STORE ax, z;通用寄存器型架构(取-存型)
LOAD ax, x
LOAD bx, y
ADD cx, ax, bx
STORE cx, z

三、堆栈型架构的存储

Ⅰ、优点

堆栈型架构具有以下优点:

  • 所有的运算都是零地址指令
  • 单地址指令只包括PUSHPOP

对一个三地址指令OP dt, sc1, sc2,即(操作码,目的地址,操作数一的地址,操作数二的地址),可改写为:

PUSH sc1
PUSH sc2
OP
POP dt

Ⅱ、应用——执行(逆)波兰式


1、波兰式的转换

前缀表达式,即波兰式;
后缀表达式,即逆波兰式;

在数据结构中我们学了表达式树遍历法:

给定前中后缀表达式,写出表达式树,进行前序中序后序遍历即可。最后的波兰式和逆波兰式无需括号

在这里插入图片描述

通常还有另外一种方法——按优先级替换,这种方法可以依托栈实现:

在这里插入图片描述

2、堆栈执行(逆)波兰式

使用堆栈执行波兰式,首先要解析各符号

从左向右扫描整个波兰式,从最右边的符号开始解析:

  • 如果是操作数,将其入栈
  • 如果是运算符,堆栈弹出操作数,计算,结果入栈

在这里插入图片描述


推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 本文介绍了在git中如何对指定的commit id打标签,并解决了忘记打标签的问题。通过查找历史提交的commit id,可以在任意时间点打上标签。同时,还介绍了git中的一些常用命令和操作。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 006_Redis的List数据类型
    1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • SAP羞辱国产软件商:技术停在10年前
    SAP中国研究院总裁芮祥麟表示,国产软件厂商过于热衷概念炒作,技术水平停留在10年前的客户端架构水平。他认为,国内厂商推出基于SOA的产品或转型SAAS模式是不可能的,研发新架构需要时间。当前最热门的概念是云计算,芮祥麟呼吁国产厂商应该潜心研发底层架构。 ... [详细]
  • GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
    11月13日,由腾讯云主办、游戏茶馆协办的2020年首场GAME-TECH腾讯云游戏行业技术沙龙在成都圆满落幕。本次沙龙邀请了腾讯云游戏行业解决方案总监宋永周、腾讯云游戏行业高级解决方案架构师曾梓恩、腾讯云游戏行业高级产品架构师郑晓曦、腾讯云游戏行业高级解决方案架构师温球良和天美L1(王者荣耀)服务器技术副总监杨光,为参会同行们带来了干货满满的技术建议。本文介绍了腾讯云游戏云的优势和为不同游戏研运场景提供的服务。腾讯云在中国游戏云服务市场领跑,成为众多游戏开发者的合作伙伴。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 在编写业务代码时,常常会遇到复杂的业务逻辑导致代码冗长混乱的情况。为了解决这个问题,可以利用中间件模式来简化代码逻辑。中间件模式可以帮助我们更好地设计架构和代码,提高代码质量。本文介绍了中间件模式的基本概念和用法。 ... [详细]
author-avatar
水妖精Fairy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有