MIPS特有的指令

MIPS已经经历了五代指令集,演进过程通常是在增加其他架构中有的特性。 下面是MIPS的特有的一些指令,其中的几个还可以在原始指令集中找到。

不对齐数据传输指令

MIPS有特别的指令用于内存的不对齐的字访问。大多数的应用程序都不会用到这些指令,只有在16位小型机的应用程序,以及快速memcpy和strcpy时,才可能用到。
当你想要不按字对齐的方式访问字的时候,大多数的RISC都会发生trap,通常的解决方法是使用字节访问指令分别访问4个字节,然后将得到的4个字节移位拼接起来。
MIPS的加载和存储指令(LWL,LWR,SWL,SWR)组合可以只用两条指令来解决非对齐访问:LWL加载寄存器的左半边,LWR加载寄存器的右半边;SWL和SWR则是对应的存储指令。图31演示了这个过程。还有处理64位数据版本的指令。

图31 MIPS不对齐访问指令。假设操作是处于大端模式。示例1中,第一次用LWL加载了3个字节,分别是101,102和103到R2寄存器中,留下了寄存器的最低有效字节。接下来的LWR只加载了104到R2的最低有效字节中,并且没有对R2中的其他3个字节造成影响。示例2中,首先加载了203到R4的最高有效字节,然后再用LWR加载了204,205和206到R4的其他3个字节中。

其余指令

下面是MIPS64体系结构的另外一些特有特点的指令:

  • 或非逻辑运算。
  • 寄存器移位的指令包含了不可用的5个固定字段。
  • 用SYSCALL这条trap指令来调用系统调用。
  • 读写控制寄存器用的是CTCi和CFCi
  • 跳转调用不是PC相对地址。跳转和调用指令中的26位地址编码先左移两位,然后直接替换掉PC的低28位。显然的,程序如果跨过256MB界限执行,则需要另外的处理。
  • TLB缺失在MIPS I中是由软件处理的,所以,指令集中也有操纵TLB寄存器的指令。TLB寄存器被看作是系统协处理的一部分。由于这些指令在MIPS I的各个版本的实现中都不同,所以与其说是指令集的一部分,不如说是实现的一部分。
  • 倒数和倒数平方根没有依照IEEE 754标准实现,用它们来实现除法和平方根的程序,应该是更追求速度而不是准确度的程序。
  • 条件跳转指令BGEZAL在Rs1大于等于0的时候,保存返回地址并跳转;BLTZAL则在小于等于0的时候做一样的事情。这两条指令的目的是做一个相对PC的调用。
  • 单精度浮点并行操作和整数并行操作的扩展都在MDMX中,MIPS64还支持用一条指令并行的操作64位寄存器中的两个32位浮点。

MIPS架构中没有明确规定浮点和整数能不能并行执行,并且,MIPS的浮点实现可以通过检查是否会发生算术中断来支持并行执行。不过,通常异常检测会强制串行执行整数和浮点的操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 4,581评论 1 19
  • 寄存器窗口(register windows) SPARC 最独特的特性是寄存器窗口,一种优化函数调用阶段的手段。...
    rustydaar阅读 2,044评论 0 1
  • 一、概要 1、数据的表示:数制及其转换、原码、反码、补码、移码、浮点数、溢出、算...
    _Jason___阅读 3,073评论 0 5
  • 早上刚看到笑来老师布置的这个作业的时候,第一反应就是意识到自己记录注意力的开销的方式方法还待完善,按照目前的记录方...
    鱼成雁阅读 310评论 0 0
  • 1 白驹过隙,有多少人是白发如新,倾盖如故,乱花渐欲迷人眼,红尘琉璃百渡人生里看不清千里共婵娟的期许,年年岁...
    空城锦阅读 335评论 0 1