Question
Please help with this code, the ones already posted on chegg aren't helpful. # WRITE MIPS CODE FOR THE FOLLOWING C++ CODE: #include #include #using
Please help with this code, the ones already posted on chegg aren't helpful.
# WRITE MIPS CODE FOR THE FOLLOWING C++ CODE: #include
.data .eqv SYS_PRINT_WORD 1 #word, byte, character .eqv SYS_PRINT_FLOAT 2 #float .eqv SYS_PRINT_DOUBLE 3 #double .eqv SYS_PRINT_TEXT 4 #text (zero terminated) .eqv SYS_INPUT_WORD 5 #input word .eqv SYS_EXIT 10 #terminate
# //declare variables # string result; # int x; result: .asciiz "0123456789012345" #max of 16 chars x: .word 0 # copy of $s5 endl: .asciiz " " tx_prompt: .asciiz "Please enter a value for x (integer): " tx_bbb: .asciiz "bbb" tx_ccc: .asciiz "ccc" tx_ddd: .asciiz "ddd" tx_eee: .asciiz "eee" prob1_label: .asciiz "1.\t" prob2_label: .asciiz "2.\t" prob3_label: .asciiz "3.\t" prob4_label: .asciiz "4.\t"
.text .globl main main: # //prompt for, read in a value for x # cout << "Please enter a value for x (integer): "; # cin >> x; la $a0, tx_prompt # load address of prompt for syscall li $v0, SYS_PRINT_TEXT # specify Print String service syscall # print the prompt string li $v0, SYS_INPUT_WORD # specify Read Integer service syscall # Read the number. After this instruction, the number read is in $v0. add $s5, $v0, $zero # transfer the number to s5 la $t0, x sw $s5, 0($t0) # s5 = x = input word number la $s4, result # s4 = address of result string
# //PROBLEM1
# //PROBLEM2
# //PROBLEM3
# //PROBLEM4
#---- terminate --- exit: li $v0, SYS_EXIT syscall #------------------------------------------------------------- # concatstr - concatenate $a1 to $a0 string # input $a0 - address of result string # input $a1 - address of string to concatenate to result # output $a0 - address of end of string \0 # output $a1 - address of end of string \0 #------------------------------------------------------------- concatstr: #find \0 in a0 result string findend: lbu $t0, 0($a0) beq $t0, $zero, docopy # branch if result.at(a0) == '\0' addiu $a0, $a0, 1 j findend # move to next char and keep looking # concatenate a1 chars to a0 chars docopy: lbu $t0, 0($a1) # get current char from a1 sb $t0, 0($a0) # copy current char to a0 beq $t0, $zero, concatstr_exit # if char == '\0', branch & stop if char was '\0' addiu $a0, $a0, 1 # advance to next char addiu $a1, $a1, 1 # advance to next char j docopy concatstr_exit: jr $ra #.end main
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started