compilation DMU
0,5 Opérateurs commun
add $r10, $r1, $r2
spectacler10 = r1+r2
addi $r1, $zero, 1000
spectacle0寄存器和立即数1000相加放入r1
lw $r0, 8($sp)
spectacleload word sp地址+8 到r0
beq $r3, $r9, LABEL
Indiquezbranch equal
si elles sont égales, saut LABELload
Chargé à partir du registre de mémoirestore
stockage retour- Math
addi
,subi
,divi
,multi
slt
Indiquezset if less than
si moins que l' exécutionslt $d, $rs, $rt
slit $d, $rs, 5
j LABEL
aborder LABELjr $a0
registre d'adressagejal LABEL
Jump-un- Le PC + 4 actuel est stocké dans le registre $ ra
j LABEL
retour
par exemple
1. sommation Analyse
if(i == j) {
f = i + j
} else {
f = i - j
}
compilation
bne $r3, $r4, ELSE # bne——branch not equal
add $r5, $r3, $r4
j EXIT # j——jump
ELSE:
sub $r5, $r3, $r4
EXIT
2.Aux boucle
sum = 0
for(i = 0; i < 100; i++) {
sum += i
}
compilation
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. Fonctions
- Corps de fonction étiquette --label
- saut jal-- et lien (saut et lien)
- Le passage de paramètres - Stack
# 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. La fonction retourne
# 函数体最前面
sw $ra, 0$(sp)
addiu $sp, $sp, -4
lw $t1, 4($sp)
lw $s0, 8($sp)
jr $t1 # 跳转回去
Interrompre
Lorsque le monde extérieur change, l'attention a eu lieu un certain temps en interrompant la CPU. Cette fois, l'état exécuté par la CPU est stockée, le programme d'interruption est exécuté
- OS chargé lorsque vous chargez le IVT (comme le type de programme 01, les procédures d'intervention d'interruption existent sur 0x003)
- interruptions matérielles - souris, les actions de réponse du clavier
- interruption logicielle - niveau de langue gestion des exceptions
Q & A
- 32 chemin machine interrompue (ISR) seulement quatre octets, la façon d'effectuer la procédure?
- les interruptions du système d'exploitation, puis exécutez le programme
- Comment chemin réponse d'interruption clé du système d'exploitation, puis à l'application, le système sait?
- Chaque clavier est un mappage d'adresse
- Mauvais? Pourquoi sauter non seulement la gestion des erreurs?
- Pas une relation, pour réduire le degré de couplage