mips中的li_MIPS学习笔记(一)

写在前面

本文是根据"MIPS Assembly Language Programming CS50 Discussion and Project Book. Daniel J. Ellard"总结的。其中有大量的翻译文体以及个人的看法想法,当然,内容没有书上那么详尽。

这一章节会涉及MIPS的变量的声明、数据的输入输出、取地址、分支跳转语句(用以实行循环、判断等),基本上对应于任何一门高级语言的最基本操作。

简介

机器语言

正如我们在前一章中所看到的,计算机指令可以表示为位序列。一般来说,这是程序可能的最低表示级别——每条指令都相当于CPU的单个不可分割的动作。这种表示被称为机器语言,因为它是机器可以直接“理解”的唯一形式

汇编语言

一个高一层的表示(而且对人类来说更容易使用)称为汇编语言。汇编语言与机器语言有着非常密切的关系,通常有一种直接的方法将汇编语言编写的程序翻译成机器语言。(此算法通常由一个名为汇编程序(assembler)的程序实现。)

因为机器和汇编语言关系很近,每个不同的机器体系结构通常都有自己的汇编语言(事实上,每个体系结构可能有几个),并且每个都是唯一的。用 assember(而不是机器语言)编程的优势在于,汇编语言更容易让人阅读和理解。

开始编程

在这一章节中不会正式介绍所有指令,只是为了熟悉汇编和部分算法

1. 初步了解汇编

涉及到的新指令/标签

#

/**/

li

add

main

addi

syscall

正文

下面由一个add.asm为例开始了解汇编(语法结构等等),且暂时不严格要求指令之间的不同之处(后续会介绍具有类似功能的指令也会有一些差异)

1.1 注释

在开始编写程序的可执行语句之前,我们需要编写一个描述程序应该做什么的注释。

#和/**/都可以写注释

1.2 寻找正确的指令

由于MIPS体系结构的指令相对较少,很快你就会记住你需要的所有指令,但是随着你开始,你需要花一些时间浏览指令列表,寻找那些你可以用来做你想做的事情的指令。这些可以在第二部分找到。

加法运算需要三个操作数(operant)

li(load immediate value):将32位常量(32-bit constant)放入指定寄存器中

# add.asm

# begin of add.asm

li $t1,1 #load 1into register $t1

add $t0,$t1,2 #$t0 = $t1 + 2

1.3 补全程序

上面两条指令执行我们想要的计算,但它们并不构成一个完整的程序。与C类似,汇编语言程序必须包含一些附加信息,这些信息告诉汇编程序的开始和结束位置。此信息的确切形式因汇编程序而异(请注意,对于给定的体系结构,可能有多个汇编程序,而对于MIPS体系结构,可能有多个汇编程序)。本教程假设 SPIM被用作汇编和运行时环境。

(1)Label和main

标签(Label)是内存中地址的符号名称。在MIPS程序集中,标签是符号名(遵循与C符号名相同的

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值