Основные понятия цифровой логики

Дополнительные материалы для объединенного семинара MIPSfpga и Connected MCU от Imagination Technologies Октябрь-Ноябрь 2016

Контрольная работа 3.2. Компиляция с языка C в MIPS Ассемблер

Имя ___________________________________________________________________

1. Для чего используют программный стек при программировании на ассемблере? a) Стек необходим для хранения адресов возврата для вложенных вызовов функций b) Стек используется для передачи параметров функции когда не хватает места в регистрах c) Стек используется для выделения места для временных переменных, при отсутствии места в регистрах d) Стек используется для сохранения на время значений регистров при вызове функции e) Все вышеизложенное 2. Какой код MIPS Ассемблера соответствует следующему C коду? int f (int a, int b) { int i, sum; for (i = a; i <= b; i++) sum += i; return sum; } ////////// a ////////// f: li $3,1 beq $4,$3,.L3 li $3,2 beq $4,$3,.L6 nop bne $4,$0,.L9 nop lw $2,%gp_rel(a)($28) j $31 sltu $2,$0,$2 .L3: li $2,2 lw $3,%gp_rel(b)($28) j $31 movz $2,$0,$3 .L6: move $2,$0 .L9: j $31 nop ////////// b ////////// f: addiu $sp,$sp,-24 sw $31,20($sp) sw $16,16($sp) move $16,$4 beq $4,$0,.L2 li $2,1 jal f addiu $4,$4,-1 mul $2,$2,$16 .L2: lw $31,20($sp) lw $16,16($sp) j $31 addiu $sp,$sp,24 ////////// c ////////// f: slt $3,$5,$4 bne $3,$0,.L5 nop addu $2,$2,$4 .L4: addiu $4,$4,1 slt $3,$5,$4 beq $3,$0,.L4 addu $2,$2,$4 subu $2,$2,$4 .L5: j $31 nop ////////// d ////////// f: nor $2,$0,$6 and $5,$2,$5 and $4,$4,$6 or $2,$5,$4 j $31 sw $2,%gp_rel(e)($28) ////////// e ////////// f: lui $3,%hi(a) addiu $3,$3,%lo(a) addiu $5,$3,40 .L3: lw $4,0($3) addiu $3,$3,4 bne $3,$5,.L3 addu $2,$2,$4 j $31 nop /////////////////////// Контрольная работа составлена Юрием Панчулом