MIPS指令与MIPS汇编语言

2023-05-16

文章目录

      • 1 MIPS简介
      • 2 MIPS指令系统的特点
      • 3 MIPS寄存器
      • 4 MIPS指令格式
        • 4.1 R-Type型指令
        • 4.2 l-Type型指令
        • 4.3 J-Type型指令
        • 4.4 三类指令小结
      • 5 MIPS例题
      • 6 MIPS过程调用
        • 6.1 过程调用和栈
        • 6.2 MIPS中栈的实现
        • 6.3 栈帧的概念
        • 6.4 MIPS中的过程调用(假定P调用Q)
        • 6.5 过程调用举例

1 MIPS简介

  1. MIPS是(Microcomputer without interlocked pipeline stages)的缩写,含义是无互锁流水级微处理器MIPS采用的是精简指令系统计算结构(RISC结构)(与之对应的:(复杂指令集)CISC结构)。RISCCISC的设计更加简单,由于其授权费用低,被INTEL外的大多数厂商使用。同时在设计理念上MIPS强调软硬件协同提高计算机性能,并简化硬件设计。

  2. MIPS 是最早的,最成功的RISC处理器之一,MIPS处理器广泛的应用于:数字电视、机顶盒、蓝光播放器、游戏机、网络设备。

2 MIPS指令系统的特点

  • 指令的类型较少;
  • 指令的复杂度较低;
  • 这些特点使得CPU运行的更快;
  • 用标号、变量名称、寄存器名称、常数表示操作数或地址码。
  1. 固定的指令长度(32-bit,即1word)

简化了从存储器取指令

  1. 简单的寻址模式

简化了从存储器取操作数

  1. 指令数量少,指令功能简单(一条指令只完成一个操作)

简化指令的执行过程

  1. 只有LoadStore指令可以访问存储器

例如,不支持×86指令的这种操作:ADD AX,[3000H]

3 MIPS寄存器

MIPS 包含32个通用寄存器 ($0-$31均为32 位), 硬件没有强制性的指定寄存器使用规则,但是在实际使用中,这些寄存器的用法都遵循一系列约定,寄存器约定用法引入了一系列的寄存器约定名。在使用寄存器的时候,要尽量用这些约定名或助记符,而不直接引用寄存器编号。

REGISTERNAMEUSAGE
$0$zero常量0(constant value 0)
$1$at保留给汇编程序(Reserved for assembler)
$2-$3$v0-$v1函数调用返回值(values for results and expression evaluation)
$4-$7$a0-$a3函数调用参数(arguments)
$8-$15$t0-$t7暂时的(或随便用的)
$16-$23$s0-$s7保存的(或如果用,需要SAVE/RESTORE的)(saved)
$24-$25$t8-$t9暂时的(或随便用的)
$28$gp全局指针(Global Pointer)
$29$sp堆栈指针(Stack Pointer)
$30$fp帧指针(Frame Pointer)
$31$ra过程调用返回地址(return address)

(1)两个特殊寄存器:

$0:不管你存放什么值,其返回值永远是零。
$31:永远存放着正常函数调用指令(jal)的返回地址。

(2)$at :

由编译器生成的复合指令使用

(3)$v0, $v1:

用来存放一个子程序 (函数) 的非浮点运算的结果或返回值。如果这两个寄存器不够存放需要返回的值,编译器将会通过内存来完成。

(4)$ a0-a3:

用来传递子函数调用时前4个非浮点参数。

(5)$ t0-t9:

依照约定,一个子函数可以不用保存并随便的使用这些寄存器。在作表达式计算时,这些寄存器是非常好的暂时变量。当调用一个子函数时,这些寄存器中的值有可能被子函数破坏掉。所以也是最不安全的。

(6)$ s0-s8:

依照约定,子函数必须保证当函数返回时这些寄存器的内容必须恢复到函数调用以前的值, 或者在子函数里不用这些寄存器或把它们保存 在堆栈上并在函数退出时恢复。 这种约定使得这些寄存器非常适合作为寄存器变量、 或存放一些在函数调用期间必须保存的原来的值。(类比:x86汇编中的函数序言和函数尾声)

(7)$ k0, k1:

被OS的异常或中断处理程序使用。被使用后将不会恢复原来的值。因此它们很少在别的地方被使用。

(8)$gp:

如果存在一个全局指针,它将指向运行时决定的静态数据(static data)区域的一个位置。这意味着,利用gp作基指针,在gp指针32K左右的数 据存取,系统只需要一条指令就可完成

(9)$ sp:

堆栈指针的上下需要显 式的通过指令来实现。因此 MIPS通常只在子函数进入和 退出的时刻才调整堆栈的指针。 这通过被调用的子函数来实现。SP通常被调整到这个被调用 的子函数需要的堆栈的最低的地方,从而编译器可以通过相对sp的偏移量来存取堆栈上的堆栈变量。

(10)$ fp(另外的约定名是s8):

fp作为框架指针可以被函数用来记录堆栈的情况,在一 个过程中变量相对于函数指针的偏移量是不变的。(相对地址)一些编程语言显示的支持这一点。汇编编程员经常会利用fp的这个用法。C语言的库函数 alloca()就是利用了fp来动态调整堆栈的。

(11)$ ra:

当调用任何一个子函数时,返回地址存放在ra寄存器中,因此通常 一个子程序的最后一个 指令是: jr ra.子函数如果还要调用其他的子函数,必须保存ra的值,通常通过堆栈。

(12)其他方面:

MIPS里没有状态码。CPU状态寄存器或内 部都不包含任何用户程序计算的结果状态信息。

hilo 是与乘法运算器相关的两个寄存器,是用来存放结果的地方。 它们并不是通用寄存器,除了用在乘除法之 外,也不能有做其他用途。 MIPS里定义了一些指令可以往hilo里存入任何值。

浮点运算协处理器 (浮点加速器,FPA),如果存在的话,有32个浮点寄存器。按汇编语言的简单约定讲, 是从$ f0$f31

4 MIPS指令格式

  • 所有指令都是32位宽,须按字地址对齐字地址为4的倍数!
  • 有三种指令格式

4.1 R-Type型指令

R-Type:一条32位的MIPS R型指令按下表bit数划分为 6个字段:6 + 5 + 5 + 5 + 5 + 6 = 32bit
在这里插入图片描述

(1)R型指令一共有6个域;
(2)shamt字段表示的是移位操作的位数;
(3)R指令中opcode的值一般是000000,操作类型由funct字段指定;
(4)目的操作数是用来保存运算结果的操作数,送寄存器rd
(5)R型指令的寻址方式仅仅一种,就是寄存器寻址。两个操作数和结果都在寄存器的运算指令。

实例: add $8, $17, $18

$8 = $17 + $18
第一个操作数是寄存器 $17,第二个寄存器是 $18,目的寄存器结果是 $8.该指令没有移位。
因为,加法是运算指令,指令操作类型码op是0,funct是32。

所以格式是:

0$17$18$8032

4.2 l-Type型指令

l-Type:立即数型指令。6+5+5+16=32bit
在这里插入图片描述

I-型指令分类:装入/存储指令、分支指令和 立即数运算指令

运算指令:一个寄存器、一个立即数。如:ori rt,rs,imm16(Immediate,立即数)

LOADSTORE指令。如:lw rt,rs,imm16
条件分支指令。如:beqrs,rt,imm16

4.3 J-Type型指令

J-Type:无条件跳转指令。6+26=32bit。
在这里插入图片描述

4.4 三类指令小结

R:Register,寄存器I:Immediate,立即数J:Jump,无条件转移

在这里插入图片描述

  • OP:操作码
  • rs:第一个源操作数寄存器
  • rt:第二个源操作数寄存器
  • rd:结果寄存器
  • shamt:移位指令的位移量
  • func:R-Type指令的OP字段是特定的“000000”,具体操作由func字段给定。例如:func=“100000”时表示“加法”运算。

操作码的不同编码定义不同的含义,操作码相同时,再由功能码定义不同的含义!

  • immediate:立即数或load/store指令和分支指令的偏移地址
  • target address:无条件转移地址的低26位。将PC高4位拼上26位直接地址,最后添2个“0”就是32位目标地址。为何最后J-型指令最后两位要添“0”?

回答:指令按字地址对齐,所以每条指令的地址都是4的倍数(最后两位为0)。

5 MIPS例题

  1. 若从存储器取来一条指令为00AF8020H,则对应的汇编形式是什么?
  • 32位指令代码:0000 0000 1010 1111 1000 0000 0010 0000
    指令的前6位为000000,根据指令解码表知,是一条R-Type指令,按照R-Type指令的格式划分:

在这里插入图片描述

  • 得到:rs=00101,rt=01111,rd=10000,shamt=00000,funct=100000。根据R-Type指令解码表,知是“add”操作(非移位操作)
  • rs、rt、rd的十进制值分别为5、15、16,从MIPS寄存器功能表知:

rs、rt、rd分别为:$ a1、$ t7、$ s0

  • 故对应的汇编形式为:add $ sq,$ a1,St7
    功能:Sa1+St7→$s0
    这个过程称为“反汇编”,可用来破解他人的二进制代码(可执行程序)
  1. 若MIPS Assembly Instruction:Add $ t0,$ s1,$ s2则对应的指令机器代码是什么?
  • 从助记符表中查到Add是R型指令,即:

在这里插入图片描述

  • 转化为寄存器单元和二进制指令:在这里插入图片描述

MIPS中最重要的寄存器及其编号与功能与其助记

在这里插入图片描述
在这里插入图片描述

6 MIPS过程调用

引出问题:过程调用对应的机器代码如何表示?

  1. 如何从调用程序把参数传递到被调用程序?
  2. 如何从调用程序执行转移到被调用程序执行?
  3. 如何从被调用程序返回到调用程序执行?并把返回结果传递给调用程序?
  4. 如何保证调用程序中寄存器内容不被破坏?

6.1 过程调用和栈

过程调用的执行步骤(假定过程P调用过程a):

(1)将参数放到Q能访问到的地方;
(2)将P中的返回地址存到特定的地方,将控制转移到过程Q;
(3)为Q的局部变量分配空间(局部变量临时保存在栈中);
(4)执行过程Q;
(5)将Q执行的返回结果放到P能访问到的地方;
(6)取出返回地址,将控制转移到P,即返回到P中执行 ;
(1)(2)在调用过程P中完成;(3)(4)(5)(6)在被调用过程Q中完成。

如果过程中用到的参数超过4个,返回值超过2个,怎么办?

  • 更多的参数和返回值要保存到存储器的特殊区域中
  • 这个特殊区域为:栈(Stack)
  • 栈的基本概念
  • 是一个“先进后出”队列
  • 需一个栈指针指向栈顶元素
  • 每个元素长度一致
  • 用“入栈”(push)和“出栈”(pop)操作访问栈元素

6.2 MIPS中栈的实现

  • 用栈指针寄存器$sp来指示栈顶元素
  • 每个元素的长度为32位,即:一个字(4个字节)
  • “入栈”和“出栈”操作用sw/lw指令来实现,需用add/sub指令调整$sp的值,不能像×86那样自动进行栈指针的调整
    (有些处理器有专门的push/pop指令,能自动调整栈指针。如×86)
  • 栈生长方向
    从高→低地址“增长”,而取数/存数的方向是低→高地址(大端方式)

每入栈1字,$sp-4→$sp;每出栈1字,$sp+4→$sp

6.3 栈帧的概念

  • 各过程有自己的栈区,称为栈帧(Stack frame),即过程的帧(procedure frame
  • 栈由若干栈帧组成
  • 用专门的帧指针寄存器指定起始位置,当前栈帧范围在帧指针和栈指针之间
  • 程序执行时,栈指针可移动,帧指针不变。所以过程内对栈信息的访问可通过帧指针进行
  • 复杂局部变量一定分配在栈帧中

6.4 MIPS中的过程调用(假定P调用Q)

  1. 程序可访问的寄存器组是所有过程共享的资源,给定时刻只能被三个过程使用,因此过程中使用的寄存器的值不能被另一个过程覆盖!
  2. MIPS的寄存器使用约定:

(1)保存寄存器$s0~$s7的值在从被调用过程返回后还要被用,被调用者需要保留
(2)临时寄存器$t0~$t9的值在从被调用过程返回后不需要被用(需要的话,由调用保存),被调用者可以随意使用
(3)参数寄存器$a0~$a3在从被调用过程返回后不需要被用(需要的话,由调用者保存在栈帧或其他寄存器中),被调用者可以随意使用
(4)全局指针寄存器$gp的值不变
(5)帧指针寄存器$fp用栈指针寄存器$sp-4来初始化

  1. 需在被调用过程Q中入栈保存的寄存器(称为被调用者保存)

(1)返回地址$ra(如果Q又调用R,则$ra内容会被破坏,故需保存)
(2)保存寄存器$s0~$s7(Q返后P可能还会用到,Q中用的话就被破坏,故需保存)

  1. 除了上述寄存器以外,所有局部数组和结构等复杂类型变量也要入栈保存
  2. 如果局部变量和临时变量发生寄存器溢出(寄存器不够分配),则也要入栈

6.5 过程调用举例

假定swap作为一个过程被调用,temp对应$t0,变量v和k分别对应$a0$a1。写出对应的MIPS汇编代码。

swap(int v[],int k)
{
   int temp; 
   temp=v[k]; 
   v[k]=v[k+1];
   v[k+1]=temp;
}
sll $s2,$a1,2  //mulitply k by 4 ,int类型,k是下标,乘4→左移两位
add $s2 $s2,$a0;  //address of v[k] ,k的地址
lw$to,0($s2);  //load v[]
lw$s3,4($s2);  //load v[k+1]
sw$s3,0($s2);   //store v[k+1] into v[k]
swSt0,4($s2);   //store old v[k] into v[k+1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MIPS指令与MIPS汇编语言 的相关文章

  • MIPS32 路由器:内核模块未调用 module_init

    我正在开发一个要在路由器上运行的内核模块 路由器型号为 Netgear 的 DGN2200v2 它在 MIPS 上运行 Linux 2 6 30 我的问题是 当我加载模块时 似乎我的module init没有接到电话 我试图通过修改我的mo
  • DOSBOX 快捷键及 MS-DOS 命令

    1 全屏 退出全屏 alt enter 2 释放鼠标 ctrl F10 3 exit 退出DOSBOX 4 dir 显示目录内容 可选参数 w 只显示文件名 P 显示部分内容 exe 筛选出可执行文件 5 cd 进入目录 cd 退回上一级目
  • MIPS 组件,lui 0x1001

    我有一个作业 其中我必须解释有关以下 MIPS 汇编代码的一些内容 data x word 4711 y word 10 z word 0x0A91 e word 0 text globl main main lw 2 x lw 3 y l
  • MIPS 汇编中的奇怪跳跃

    我可能在这里遗漏了一些非常明显的东西 但我已经一遍又一遍地讨论这个问题 而且我肯定被困住了 在下面的代码中 8仅当以下情况时才会递增 2 0 现在我仔细检查了两次和三次beq指令有效 例如 如果我将 lop 更改为 end2 它就会转到那里
  • 为 MIPS 编译 Linux 内核 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一台 32 位 MIPS 机器 想在上面运行 Linux 我需要使用我的 Windows 7 机器将 Linux 交叉编译为 MIPS 我对如何解决这个问题感到困惑 有人可以
  • MARS MIPS 模拟器的内置汇编器比要求的对齐程度更高?

    我有以下数据段 data a byte 0x11 align 1 b word 0x22334455 假设地址 a 为 0x10010000 则 b 处字的预期地址为 0x10010002 但 MARS 将字存储在 0x10010004 忽
  • 使用 MIPS 汇编中的逻辑移位乘以 2 的幂

    有人可以指导我如何在 MIPS 汇编中使用移位来制作乘法代码吗 我不明白数字 2 n 如何帮助我使用奇数被乘数进行乘法 我目前有这段代码 我正在尝试制作一个计算器 text li v0 4 la a0 ask 1 syscall li v0
  • 为什么MIPS汇编器有多个寄存器用于返回值?

    我刚刚开始学习MIPS汇编程序并意识到有两个寄存器 http en wikipedia org wiki MIPS architecture Compiler register usage用于返回值 首先 我认为它的实现是因为有些语言可能返
  • MIPS 伪指令、替换

    经过研究后 我发现这只是获得相同结果的方法的替代 如果我错了 请纠正我 example move s0 t1 可以替换为 add s0 zero t1 问题 怎样才能更换lw la sw bne 是的move指令可以并且被替换为add操作说
  • 简单的 MIPS 汇编 - 返回斐波那契数

    我正在尝试创建一个简单的汇编代码 它接受输入 N 并返回第 N 个斐波那契数 例如 如果您输入 2 它应该输出 1 如果您输入 3 它应该输出 2 我的代码不会抛出任何错误 但是在输入数字后它会返回一些奇怪的东西 如果输入 1 则返回 26
  • 如何从字符串输入中删除逗号

    我正在开发一个使用 MIPS 本机指令的程序 该程序将允许用户输入三个十进制数字作为空终止字符串 每个数字不能超过六位数字 如果用户输入逗号 例如 123 456 则从内存中删除逗号 第一个数字存储在内存地址 0x10000000 中 第二
  • MIPS 浮点:swc1 与 s.s

    我正在做一些涉及的工作MIPS汇编 我不断遇到这四个浮点加载 存储伪指令 l s l d s s s d 我在网上找到了一些文档 发现有四个 实际 指令似乎可以做同样的事情 lwc1 ldc1 swc1 and sdc1 我唯一的问题是 有
  • 如何实现 if(x >= '0' && x <= '9') 范围检查,如 MIPS 中的 isdigit ?

    我编写了以下函数来检查字符是否是数字 IsDigit tests a if a character a digit or not arguments a0 character byte return value v0 1 digit 0 n
  • 如何在不使用内置指令的情况下在 MIPS 汇编中实现乘法和除法?

    好吧 问题就在这里 我必须编写一个 MIPS 程序 从用户那里获取 2 个输入数字 然后 我必须编写一个代码来输出用户输入的 2 个数字的乘积 商和余数 现在 这非常简单 但是 我没有意识到我们不能在程序中使用乘法和除法操作数 现在我不知道
  • 为 Mips 架构编译 C

    我已经看到了几种方法来做到这一点 到目前为止我还没有尝试过几种 但我想为了方便起见隔离这个方法 应该有一种方法可以通过 VIA gcc 来做到这一点 我更喜欢这个 我只是不断碰壁 我正在使用 debian7 并且可以使用其他任何风格 我暂时
  • 循环遍历阵列 MIPS 组件

    我正在开发一个循环遍历 10 个数字的数组的程序 前 9 个元素的值大于 0 第 10 个元素的值为 0 遇到 0 时循环应中断 i 0 while A i 0 A i A i 1 i 我知道如果寄存器的值等于 0 我可以使用 beq 来中
  • 为什么MIPS中内存地址加4?

    如果某些内容存储在 0x1001 0000 处 则下一个内容将存储在 0x1001 0004 处 如果我是正确的 32 位架构中的内存块每个都是 32 位 那么0x1001 0002会指向32位的后半部分吗 首先 MIPS 架构中的内存地址
  • 使用 MIPS 从 Big Endian 到 Little Endian 无需逻辑运算?

    我正在使用 MIPS QtSpim 将 32 位字从 Big Endian 转换为 Little Endian 我下面显示的内容已检查且正确 不过我想知道还有什么其他方法可以让我进行转换 我虽然只使用了旋转和移位 但如果没有逻辑运算 我就无
  • 内核模块未加载(但 insmod 返回 0)

    我必须向现有设备 mips arch 添加一些功能 我已经尝试了几个 SDK 目前我取得了一些进展 但是 insmod 返回 0 成功 并且 lsmod 显示它们 但是 printk 和 create proc entry 都不起作用 但我
  • MIPS 汇编不支持“.set noat”吗?

    目前 我正在学习GNU as 并在 info as 中找到了很多有用的信息 我发现 set noat 在MIPS指定的代码中使用 但是当在 info as 中搜索该指令时 我在节点 alpha指令 中找到了它的解释 但在 MIPS Depe

随机推荐

  • LINUX GIT 使用

    git show HEAD git show HEAD git show HEAD git show HEAD git diff 486ec madplay player c git diff 4863 856f git diff 4863
  • LINUX 输入子系统分析

    1 输入子系统架构Overview 输入子系统 xff08 Input Subsystem xff09 的架构如下图所示 输入子系统由 输入子系统核心层 xff08 Input Core xff09 xff0c 驱动层和事件处理层 xff0
  • Linux Kernel and Android 休眠与唤醒

    Table of Contents 简介 国际化 版本信息 对于休眠 suspend 的简单介绍 Linux Suspend 的流程 相关的文件 准备 冻结进程 让外设进入休眠 Resume Android 休眠 suspend 涉及到的文
  • 浅析linux下键盘设备工作和注册流程

    span style color 000000 a href http qgjie456 blog 163 com blog m 61 0 span style font size 6 http qgjie456 blog 163 com
  • linux内核信号处理

    信号是操作系统中一种很重要的通信方式 近几个版本中 信号处理这部份很少有大的变动 我们从用户空间的信号应用来分析Linux内核的信号实现方式 一 信号有关的数据结构 在task struct中有关的信号结构 struct task stru
  • win7和ubuntu双系统,直接进入windows启动项选择菜单,而不进入grub的解决方案。

    一 Ubuntu 采用 grub 引导 xff0c 首先要将 grub 引导去掉 xff0c 重建 windows mbr 引导 xff0c 下载 MbrFix exe 并将它放到 C 盘根目录 xff08 其他目录也可 xff09 xff
  • 带你搞明白Zookeeper选举机制

    没什么 xff0c 搞不明白别打我就行 xff0c 初学者如有问题请及时指正 xff01 在上一篇文章我们有介绍3种server角色 xff1a Leader Follower以及Observer xff08 不参加选举 xff09 xff
  • windows远程linux桌面

    TigerVNC是一个高性能 平台无关的虚拟网络计算 xff08 Virtual Network Computing xff0c VNC xff09 实现 xff0c 是一个客户端 服务器应用程序 xff0c 允许用户在远程机器上启动并与图
  • 循环队列的介绍与实现

    文章目录 1 循环队列定义2 循环队列基本操作3 循环队列代码实现4 补充 1 循环队列定义 循环队列 xff1a 即顺序存储的队列 xff0c 是为了避免 假溢出 而利用 运算符将队列首尾相接连成一个环状的队列 xff0c 称为循环队列
  • AndroidStudio4.1 升级Kotlin插件不生效问题

    背景 xff0c 在使用SAM转换写Livedata observe 的第二个参数时 xff0c 发现AS报红 xff0c 但编译不出错 xff0c 功能也能正常运行 然后就尝试升级Kotlin插件 AndroidStudio4 1 默认带
  • 一个中科大差生的8年程序员工作总结

    今年终于从大菊花厂离职了 xff0c 离职前收入大概60w不到吧 xff0c 在某乎属于比较差的 xff0c 今天终于有空写一下自己的职场故事 xff0c 也算是给自己近8年的程序员工作做个总结复盘 近8年有些事情做对了 xff0c 也有更
  • 如何一步一步成为一个领域专家

    经常有人问我 xff0c 为什么有的人工作10年仍然平台无奇 xff0c 而有的人只用3年时间 xff0c 就已经脱颖而出 xff0c 成绩斐然 我说 xff0c 是呀 xff0c 有些参加工作多年却仍然只会复制粘贴简单业务代码 xff0c
  • 如何一步一步建立自己的技术影响力

    很多朋友是不是有这样的经历 xff0c 当我们还是一个菜鸟的时候 xff0c 团队里总有1 2个技术大拿 xff0c 每当有技术问题大家争论不休 xff0c 团队成员讨论的面红耳赤 xff0c 技术大牛实在看不下去 xff0c 掐灭手中的烟
  • 一个老程序员的一些职场经验分享

    有一些关于职场的经验 xff0c 当然有一些是以前总结过的 xff0c 现在归类总结一下 xff0c 上半部分是通用职场 xff0c 下半部分是程序员专用 一 通用职场经验 1 xff09 很多人认为事情做得多 xff0c 事情做得好就能晋
  • 第2章 第一个Spring Boot项目

    开发工具选择 工欲善其事必先利其器 xff0c 我们进行Java项目开发 xff0c 选择一个好的集成开发工具 xff08 IDE xff09 对提高我们的开发调试效率有非常大的帮助 这里我们选择大名鼎鼎的IDEA xff0c 它全称 In
  • 第8章 使用注解的方式整合MyBatis 入门详解

    目录 注解方式和配置文件方式的优缺点 使用注解方式整合MyBatis 添加依赖 配置application properties文件 在启动类上添加apperScan注解 创建mapper接口和实体类目录 添加实体类 测试验证 添加参数 直
  • 第9章 Spring Boot整合JPA 与 JpaRepository 基础方法介绍

    参考文章 xff1a 第1章 Spring Boot到底是什么 xff1f 陈小房的博客 CSDN博客 第2章 第一个Spring Boot项目 陈小房的博客 CSDN博客 第3章 Spring Boot项目配置详解 陈小房的博客 CSDN
  • 新手程序员快速升职项目经理(程序员小故事1)

    xff08 刚编的小故事 xff0c 希望对新入门的程序员有所帮助 xff09 英雄 无用武之地 小谢今年从XX大学计算机专业毕业 xff0c 和很多大学生不一样 xff0c 小谢在学校没有将时间用于开黑玩游戏 谈恋爱 xff0c 而是将时
  • Windows鼠标右键添加cmd

    1 win 43 R 打开windows运行 2 在文本框输入regedit 搜索 3 在HKEY CLASSES ROOT当中找到Folder 4 在Folder中找到shell 5 右键shell新建项cmdPrompt 6 点击cmd
  • MIPS指令与MIPS汇编语言

    文章目录 1 MIPS简介2 MIPS指令系统的特点3 MIPS寄存器4 MIPS指令格式4 1 R Type型指令4 2 l Type型指令4 3 J Type型指令4 4 三类指令小结 5 MIPS例题6 MIPS过程调用6 1 过程调