【MIPS】内存小端存储与MARS显示
1.小端存储方式:按字节逆序
以4Byte一个字为单位,其内按字节逆序排列
概念上-数据真值 | 机器码-内存存储 | Mars显示 | |||
(+0) | (+1) | (+2) | (+3) | ||
0x12345678 | 0x78 | 0x56 | 0x34 | 0x12 | 0x12345678 |
0111_1000 | 0101_0110 | 0011_0100 | 0001_0010 | ||
"Hell" | 'H' 0x48 |
'e' 0x65 |
'l' 0x6c |
'l' 0x6c |
"lleH" 0x6c6c6548 |
通过lb
指令验证
MARS中内存显示:
通过lb将地址0x00000000
~ 0x00000007
的内容取出存入$t0
~ $t7
li $t8, 0
lb $t0, 0($t8)
lb $t1, 1($t8)
lb $t2, 2($t8)
lb $t3, 3($t8)
lb $t4, 4($t8)
lb $t5, 5($t8)
lb $t6, 6($t8)
lb $t7, 7($t8)
产生的结果:
$t5
的0xffffffff
是lb指令特性:取出1Byte后将进行符号扩展至32位才能存入寄存器中
2.MARS显示:默认小端存储

MARS读取顺序
字符串与数字对比验证
如下声明:
.data
num: .word 0x12345678
msg: .asciiz "Hellow world"
查看内存(HEX显示)
查看内存(ASCII显示)
可见内存数据段中,0x12345678顺字节显示,而"Hell"逆字节显示

注意:逆序vs逆字节:
其他例证
.data 0x00001000
num: .byte 1,2,3,4,5,6,7,8
.text
li $a0, 0x00001000
lw $t0, 0($a0)
.byte指令:顺序将内容写入内存数据段,小端读取便是按字逆字节读取
【MIPS】内存小端存储与MARS显示的更多相关文章
- 小端存储(little Endian)大端存储(big Endian)
小端存储--低内存低字节 87654321 字节或半字节的最低位字节(Lowest Significant Bit,LSB)存放于内存最低位字节地址上.即最低地址存放的最低字节,为Power PC,I ...
- C语言--测试电脑存储模式(大端存储OR小端存储)
相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑时, ...
- Python struct与小端存储
参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017685387246080 在使用Python 实现字符向字节数据类型转换的时候,P ...
- C++判断计算式是大端存储模式,还是小端存储模式
小端存储:数据的低字节存储在地址空间的低字节位,数据的高字节存储在地址空间的高字节位. 大端存储:数据的低字节存储在地址空间的高字节位,数据的高字节存储在地址空间的低字节位. 判断计算机是小端还是大端 ...
- C语言判断系统数据大/小端存储方式
小端存储:数据的低位部分,存储于存储器的低地址空间里. 大端存储:数据的低位部分,存储于存储器的高地址空间里. 首先,一般PC数据存储方式是小端存储. 基本实现思想是:将存储器中所存的数据按字节以地址 ...
- C++将整型数据转换成大端或小端存储顺序
大端和小端的概念参考之前博客: 大端/小端,高字节/低字节,高地址/低地址,移位运算 昨晚帮导师从指令中恢复图像的时候,导师要我转换成raw格式,也就是记录图像像素的二进制序列,然后反复强调让我注意大 ...
- 汉的Unicode编码是6C49,而且通常都是小端存储。汉字的unicode范围是:0x4E00~0x9FA5,即CJK一共20928个字符。GBK有21886个汉字,所以多了958个汉字
小端存储的结果是 49 6C UTF-8有点类似于Haffman编码,它将Unicode编码为:0x00-0x7F的字符,用单个字节来表示:0x80-0x7FF的字符用两个字节表示:0x800-0xF ...
- 小端存储转大端存储 & 大端存储转小端存储
1.socket编程常用的相关函数:htons.htonl.ntohs.ntohl h:host n:network s:string l:long 2.基本数据类型,2字节,4字 ...
- Windows 小端存储
小端->高高低低(高位存在高地址,低位存在低地址)
- 推断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式
第一个版本号: //return true in big-endian machines bool check_big_endian1() { int a = 0; int *p = &a; ...
随机推荐
- IM通讯协议专题学习(三):由浅入深,从根上理解Protobuf的编解码原理
本文由码农的荒岛求生陆小风分享,为了提升阅读体验,进行了较多修订和排版. 1.引言 搞即时通讯IM方面开发的程序员,在谈到通讯层实现时,必然会提到网络编程.那么计算机网络编程中的一个非常基本的问题:到 ...
- JVM实战—6.频繁YGC和频繁FGC的后果
大纲 1.JVM GC导致系统突然卡死无法访问 2.什么是Young GC什么是Full GC 3.Young GC.Old GC和Full GC的发生情况 4.频繁YGC的案例(G1解决大内存YGC ...
- 使用format_obproxy_digest_log工具分析obproxy网络层耗时SQL
之前写过一个博客,介绍 ob_tools包 来实施抓取 observer 层的 gv$ob_sql_audit 的SQL,还提供一些分析SQL来通过不同维度分析缓慢的业务SQL语句,免得和应用扯皮说数 ...
- functional-requirement
功能需求 基于GeoServer现有功能,以地图展示和服务管理为核心,实现一张图DEMO. 1. 地图展示 树状展示各种地图服务,并以地图的形式展示出来. 2. 服务管理 树状管理各种地图服务,包括添 ...
- RPC简介及框架选择-copy
简单介绍RPC协议及常见框架,对比传统restful api和RPC方式的优缺点.常见RPC框架,gRPC及序列化方式Protobuf等 HTTP协议 http协议是基于tcp协议的,tcp协议是流式 ...
- 工作流程调度器-DolphinScheduler
1.DolphinScheduler简介 Apache DolphinScheduler](https://dolphinscheduler.apache.org/)(目前处在孵化阶段)是一个分布式. ...
- canal源码分析简介-1
1.0 canal源码分析简介 canal是阿里巴巴开源的mysql数据库binlog的增量订阅&消费组件.项目github地址为:https://github.com/alibaba/can ...
- Linux下mysql的二进制安装与部分练习
鲸英训练营 0531作业 一.单选题(每题5分,总分25分) 1. 在MySQL中,一般使用( A )语句来指定一个已有数据库作为当前工作数据库. A.USED B.USE C.BEGIN D.GO ...
- Delphi XE TVirtualQuery raised exception class ESQLiteError with message 'duplicate column name:dw'
使用Delphi XE7+UniDAC+TVirtualQuery开发的过程中,对已经查询到内存中的数据集TUniQuery组件,再次运用SQL语句进行查询 结果程序运行后提示错误:raised ex ...
- 国产开源跨平台软件开发框架新选择:SOUI5
一.SOUI5跨平台解决方案的实现框架介绍 SOUI5 是一款专为跨平台客户端开发设计的国产框架,源代码:Github or Gitee, 其核心优势在于通过自主实现的 Swinx,在 Linux 平 ...