淘客熙熙

主题:MIPS体系结构学习笔记(一) -- 镭射

共:💬9 🌺12 新:
全看分页树展 · 主题
家园 MIPS体系结构学习笔记(一)

本人订购的《MIPS体系结构与编程》到货了,刚刚读完第二章《MIPS结构体系概述》,记录若干心得如下:

和我以前学过的X86结构体系相比,MIPS结构体系给我的印象就是两个字:简洁。X86系统的寄存器有14个,划分为四类:通用寄存器,指令指针寄存器,标志寄存器,段寄存器。相比之下,MIPS的寄存器比X86要多,有35个,但其中有32个(r0~31)是通用寄存器,两个(HI,LO)是特殊功能寄存器(用于存储整数乘除和乘/累加操作的结果),还有一个是特殊功能程序计数器,由特定指令直接操作,对程序员不可见。也就是说,程序员面对的寄存器只有两种:通用寄存器和特殊功能寄存器。

在32个通用寄存器中,第一个寄存器r0被硬件连接成低位,也就是说,它的值是恒定的,总是0。因此这个寄存器一般被用于结果不需要保存的操作,以及作为需要0值时的来源。最后一个寄存器r31在没有特殊说明的情况下,是用于存放子函数的返回地址。同时,它也可以作为普通的寄存器使用。除了r0和r31,其他寄存器都是作为一般的寄存器使用。也就是说,MIPS有31个通用寄存器可以使用,这比X86(8个)要多的多。

虽然有这么多寄存器,但在实际使用中,这些寄存器的用法都遵从一些约定俗成的规定。比如r31虽然可以作为通用寄存器使用,但它一般是专用于存放子函数的返回地址,而不用做其他用途。这样可以提高程序的可读性。

一个问题:书上介绍,每个寄存器除了名字(r0,r1等)还有编程时的命名,比如r0叫zero,r1叫at,r31叫ra,等等。这是不是意味着MIPS的汇编语言中使用的是后一套名字?

全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河