第二章指令:计算机的语言(2.1--2.4)2023-11-29

2.1 引言

计算机语言中的基本词汇称为指令,一台计算机的全部指令称为该计算机的指令集。
设备简单性,MIPS符合此原则。

这个表很重要

2.2 计算机硬件的操作

将C语言程序转换为MIPS汇编指令是由编译器完成的。
与加法类似的指令一般都有3个操作数:两个用于运算,一个用于保存结果。
设计原则1:简单源于规整。

2.3计算机硬件的操作数

MIPS算数运算指令的操作数必须来自寄存器。
设计原则2:越小越快。
使用$s0 $s1表示C,Java程序中变量对应的寄存器,用$t0 $t1表示将程序编译为MIPS指令时所需的临时寄存器。

2.3.1存储器操作数

复杂数据结构中的数据元素可能远多于计算机中寄存器的个数。处理器只能将少量数据保存在寄存器中,但是存储器可以存放数十亿的数据元素。

存放基址的寄存器称为基址寄存器。

大端(高数据位对应低存储位),小端(低数据位对应低存储位)

lw和sw是MIPS体系结构中在存储器和寄存器之间复制字的指令。其他计算机有各自相应的取数和存数指令来传送数据。Intel x86 体系结构中有类似的指令。

2.3.2常数或立即数操作数

立即数就在指令中,最后应该是放到临时寄存器里面再执行对应运算,这个还需要下面学习确定。

addi $s3,$s3,4

2.4有符号位和无符号位

符号和幅值表示法(即原码表示法)
现在所有计算机都采用二进制补码来表示有符号数

补码用的另外一套思路,比较绕,但是也是非常对的。

符号扩展,零扩展
若计算机使用六位二进制数表示数字“00 1010”(十进制的正10),且此数字需要将字长符号扩充至十六位,则扩充后的值为“0000 0000 0000 1010”。此时,数值与符号均保留了下来。若计算机使用十位数及二补数表示数字“11 1111 0001”(十进制的负15),且此值需要扩充至十六位,则扩充后的值为“1111 1111 1111 0001”。 此时,负号及原数字数值通过将左侧填充为1的方式保留了下来。

lb,lbu,lh,lhu (byte,half)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容