30/09/2018, 18:19
Chuyển đổi từ ngôn ngữ cấp cao sang mã assembly MIPS
Hiện tại mình đang đọc tới chương 2 của quyển computer organization and design 2012 four edition
, có gặp 1 VD chuyển một đoạn code viết bằng C
sang dạng mã assembly. Đoạn code viết bằng C có nội dung như sau:
int sum(int n, int acc)
{
if(n > 0)
return sum(n - 1, acc + n);
else
return acc;
}
Mình đã chuyển sang mã assembly như sau:
sum:
addi $sp, $sp, -12
sw $a0, 8($sp)
sw $a1, 4($sp)
sw $ra, 0($sp)
slti $t0, $a0, 1
beg $t0, $zero, L1
addi $v0, $a1, $zero
addi $sp, $sp, 12
jr $ra
L1:
addi $a0, $a0, -1
addi $a1, $a1, $a0
jal sum
lw $a0, 8($sp)
lw $a1, 4($sp)
lw $ra, 0($sp)
Nhờ mọi người kiểm tra giúp mình.
Bài liên quan
3 dòng lw đâu có reach tới được. Mà cái sum() này cũng đâu cần push lên stack tạm làm gì. Bỏ 3 dòng sw với 3 dòng lw là được rồi.