主题: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的汇编语言中使用的是后一套名字?
- 相关回复 上下关系8
🙂MIPS体系结构学习笔记(一)
🙂x86是16个寄存器, 不是14个 穷与富 字0 2010-11-08 00:07:52
🙂MIPS体系结构学习笔记(二) 2 镭射 字968 2010-10-16 04:18:32
🙂这几条用得不多 帅云霓 字50 2011-03-31 02:11:08
🙂非对齐加载指令和存储指令 镭射 字525 2010-10-22 05:40:22
🙂LWL(load word left) 镭射 字888 2010-11-07 19:42:36
🙂对齐加载指令和存储指令 镭射 字605 2010-10-22 05:30:21
🙂一般,不怎么用汇编写的 帅云霓 字57 2010-10-15 00:03:12