zoukankan      html  css  js  c++  java
  • 汇编和中断

    MISP汇编

    0.常见操作符

    • add $r10, $r1, $r2 表示r10 = r1+r2
    • addi $r1, $zero, 1000表示0寄存器和立即数1000相加放入r1
    • lw $r0, 8($sp) 表示load word sp地址+8 到r0
    • beq $r3, $r9, LABEL 表示branch equal如果相等,则跳转LABEL
    • load从内存加载寄存器
    • store存储回去
    • 加减乘除addisubidivimulti
    • slt表示set if less than如果小于执行
      • slt $d, $rs, $rt
      • slit $d, $rs, 5
    • j LABEL LABEL寻址
    • jr $a0 寄存器寻址
    • jal LABEL多合一跳转
      • 当前PC + 4存入 $ra寄存器
      • j LABEL返回

    举例

    1.判断求和

    if(i == j) {
    	f = i + j
    } else {
    	f = i - j
    }
    

    汇编

    bne $r3, $r4, ELSE # bne——branch not equal
    add $r5, $r3, $r4
    j EXIT # j——jump
    ELSE:
    sub $r5, $r3, $r4
    EXIT
    

    2.for loop

    sum = 0
    for(i = 0; i < 100; i++) {
    	sum += i
    }
    

    汇编

    addi $s3, $zero, 0 # sum = 0
    addi $s4, $zero, 0 # i = 0
    addi $s5, $zero, 100 # 100
    LOOP:
    beq $s4, $5, EXIT
    add $s3, $s4, $s3
    addi $s4, $s4, 1
    j LOOP # -16
    EXIT:
    

    3.函数

    • 函数体——Label标签
    • jal——跳转并链接(jump and link)
    • 传参——栈
    # fac(5)
    addiu $s0, $0, 5 # 函数参数5存入栈 add immidiate unsigned
    sw $s0, $sp # s0写入sp
    addi $sp, $sp, -4 # 栈指针指向下一个
    jal FACT # 跳转
    
    # 函数体
    lw $s0, 4($sp) # 读取参数
    

    4.函数返回

    # 函数体最前面
    sw $ra, 0$(sp)
    addiu $sp, $sp, -4
    lw $t1, 4($sp)
    lw $s0, 8($sp)
    
    jr $t1 # 跳转回去
    

    中断

    当外界发生变化,通过中断CPU注意某个时间的发生。这个时候,CPU执行的状态被保存,中断响应程序被执行

    • OS加载时候加载IVT(比如类型01的程序,中断响应程序存在0x003上)
    • 硬件中断——鼠标、键盘响应操作
    • 软件中断——高级语言异常处理

    Q&A

    • 32位机器的中断路径(ISR)只有4个字节,如何执行程序?
      • 操作系统进行中断操作,然后执行程序
    • 按键中断响应路径到操作系统再到应用,系统如何知道?
      • 每个键盘操作都是一个地址映射
    • 出错了?为什么不直接跳转错误处理?
      • 不是1对1的关系,要降低耦合程度
  • 相关阅读:
    118/119. Pascal's Triangle/II
    160. Intersection of Two Linked Lists
    168. Excel Sheet Column Title
    167. Two Sum II
    172. Factorial Trailing Zeroes
    169. Majority Element
    189. Rotate Array
    202. Happy Number
    204. Count Primes
    MVC之Model元数据
  • 原文地址:https://www.cnblogs.com/littlepage/p/12526798.html
Copyright © 2011-2022 走看看