Chủ đề: Chuyển ngôn ngữ C sang MIPS
-
03-06-2015, 06:54 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chuyển ngôn ngữ C sang MIPS
Mình không phải dân Kiến trúc máy tính, nhưng mình đang có rắc rối với bài tập với MIPS nhờ các bạn giúp đỡ.
Bài tập của mình làm chương trình nhập vào 1 số kiểm tra số đó có là số nguyên tố hay không. Mình không biết lỗi logic như thế nào mà giá trị mặc định truyền vào hàm is_prime trên MIPS nó không nhận. Bạn nào rành code MIPS không, có thể giúp mình sửa lại đoạn code MIPS với.
Mình cảm ơn trước! [IMG]images/smilies/smile.png[/IMG]
****************Code C:
#include<stdio.h>
#include<conio.h>
int snt(int n)
{
if(n<2)return 0;
for(int i=2;i<n;i++)
if(n%i==0)
return 0;
return 1;
}
void main()
{
int n;
printf("Nhap n: ");
scanf("%d",&n);
if(snt(n) == 1)
printf("Day la so nguyen to");
else
printf("Day khong phai la so nguyen to");
}
************ Code MIPS
.data
.globl output1
.globl output2
input: .asciiz "
Nhap n: "
output1: .asciiz " is a prime
"
output2: .asciiz " is not a prime
"
################# code segment #####################
.text
############ main ################
.globl main
main:
la $a0, input # nhập n
addi $v0, $zero, 4
syscall
addi $v0, $zero, 5
syscall
move $t0, $v0
add $a0, $zero, $s2 # nếu n là số nguyên tố
jal is_prime
bne $v0, $zero, else # nếu n không là số nguyên tố
addi $s2, $s2, 1
j endif #
li $v0, 1 # xuất chuỗi "n "
syscall
li $v0, 4 # xuất ra " is a prime
"
la $a0, output1
syscall
else:
addi $s2, $s2, 1
li $v0, 1 # xuất chuỗi "n "
syscall
li $v0, 4 # xuất ra chuỗi " is not a prime
"
la $a0, output2
syscall
endif:
############### check prime ##################
.globl is_prime
is_prime:
addi $t0, $zero, 2 # khởi tạo x = 2
is_prime_test:
slt $t1, $t0, $a0 # nếu (x > num)
bne $t1, $zero, is_prime_loop
addi $v0, $zero, 1 # là số nguyên tố
jr $ra # trả về 1
is_prime_loop: # ngược lại, kiểm tra số vừa nhập
div $a0, $t0
mfhi $t3 # c = (num % x)
slti $t4, $t3, 1
beq $t4, $zero, endcheck # nếu phép chia lấy dư (c == 0)
add $v0, $zero, $zero # nó ko phải là số nguyên tố
jr $ra # trả về 0
endcheck:View more random threads:
- kiểm tra lớp kế thừa, giúp mình?
- Tạo ứng dụng với C++
- Hỏi ý nghĩa của đoạn lệnh
- sắp xếp tăng giảm mà ko đổi vị trí các phần tử
- Thắc mắc về con trỏ
- lỗi nhập chuỗi trong class.help!
- Mở file bằng command line, truyền tham số vào hàm main.
- Hàm Sắp xếp nổi bọt trong Linked List
- size_t và int trong C++
- NHân 2 ma trận trên C, giúp sửa lỗi bài này!!!
How to make gift basket bows? There are a couple ways to tackle making a bow for your gift basket, depending on the look you're going for and your desired level of complexity. Here are two...
How to make and tie a gift basket...