Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Translate C++ code to MIPS Assembly language. #include <iostream> using namespac

ID: 3819909 • Letter: T

Question

Translate C++ code to MIPS Assembly language.

#include <iostream>
using namespace std;

int maxIs (int *x, int n);
int minIs (int *x, int n);
void avgIs (int *x, int n, int *theAvg, int *theRem);

int main(void) {
int n = 8;
int x[] = {1,2,3,4,5,6,7,8};
int theMax, theMin, theAvg, theRem;
  
theMax = maxIs(x,n);
theMin = minIs(x,n);
avgIs(x,n,&theAvg,&theRem);
  
cout << "max = " << theMax << " ";
cout << "min = " << theMin << " ";
cout << "avg = " << theAvg << " " << theRem << "/" << n << " ";
cout << "Bye! ";
}

int maxIs (int *x, int n) {
int i;
int theMax = 0;
for (i=0; i<n; i++) {
if (x[i]>theMax) theMax = x[i];
}
return (theMax);
}

int minIs (int *x, int n) {
int i;
int theMin = 0x7FFF;
for (i=0; i<n; i++) {
if (x[i]<theMin) theMin = x[i];
}
return (theMin);
}

void avgIs (int *x, int n, int *theAvg, int *theRem) {
int i;
int theSum = 0;
for (i=0; i<n; i++) {
theSum += x[i];
}
*theAvg = theSum / n;
*theRem = theSum % n;
}

Explanation / Answer

.file 1 "" .section .mdebug.abi32 .previous .gnu_attribute 4, 1 .abicalls .local _ZStL8__ioinit .comm _ZStL8__ioinit,1,4 .rdata .align 2 $LC0: .ascii "max = " .align 2 $LC1: .ascii "
" .align 2 $LC2: .ascii "min = " .align 2 $LC3: .ascii "avg = " .align 2 $LC4: .ascii " " .align 2 $LC5: .ascii "/" .align 2 $LC6: .ascii "Bye!
" .text .align 2 .globl main $LFB957 = . .set nomips16 .ent main .type main, @function main: .frame $fp,88,$31 # vars= 56, regs= 2/0, args= 16, gp= 8 .mask 0xc0000000,-4 .fmask 0x00000000,0 .set noreorder .cpload $25 .set nomacro addiu $sp,$sp,-88 $LCFI0: sw $31,84($sp) $LCFI1: sw $fp,80($sp) movz $31,$31,$0 $LCFI2: move $fp,$sp $LCFI3: .cprestore 16 li $2,8 # 0x8 sw $2,32($fp) li $2,1 # 0x1 sw $2,44($fp) li $2,2 # 0x2 sw $2,48($fp) li $2,3 # 0x3 sw $2,52($fp) li $2,4 # 0x4 sw $2,56($fp) li $2,5 # 0x5 sw $2,60($fp) li $2,6 # 0x6 sw $2,64($fp) li $2,7 # 0x7 sw $2,68($fp) li $2,8 # 0x8 sw $2,72($fp) addiu $2,$fp,44 move $4,$2 lw $5,32($fp) lw $2,%got(_Z5maxIsPii)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) sw $2,28($fp) addiu $2,$fp,44 move $4,$2 lw $5,32($fp) lw $2,%got(_Z5minIsPii)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) sw $2,24($fp) addiu $4,$fp,44 addiu $3,$fp,36 addiu $2,$fp,40 lw $5,32($fp) move $6,$3 move $7,$2 lw $2,%got(_Z5avgIsPiiS_S_)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) nop lw $4,%got(_ZSt4cout)($28) lw $2,%got($LC0)($28) nop addiu $5,$2,%lo($LC0) lw $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $4,$2 lw $5,28($fp) lw $2,%call16(_ZNSolsEi)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $4,$2 lw $2,%got($LC1)($28) nop addiu $5,$2,%lo($LC1) lw $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) nop lw $4,%got(_ZSt4cout)($28) lw $2,%got($LC2)($28) nop addiu $5,$2,%lo($LC2) lw $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $4,$2 lw $5,24($fp) lw $2,%call16(_ZNSolsEi)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $4,$2 lw $2,%got($LC1)($28) nop addiu $5,$2,%lo($LC1) lw $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) nop lw $4,%got(_ZSt4cout)($28) lw $2,%got($LC3)($28) nop addiu $5,$2,%lo($LC3) lw $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $3,$2 lw $2,36($fp) move $4,$3 move $5,$2 lw $2,%call16(_ZNSolsEi)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $4,$2 lw $2,%got($LC4)($28) nop addiu $5,$2,%lo($LC4) lw $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $3,$2 lw $2,40($fp) move $4,$3 move $5,$2 lw $2,%call16(_ZNSolsEi)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $4,$2 lw $2,%got($LC5)($28) nop addiu $5,$2,%lo($LC5) lw $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $4,$2 lw $5,32($fp) lw $2,%call16(_ZNSolsEi)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $4,$2 lw $2,%got($LC1)($28) nop addiu $5,$2,%lo($LC1) lw $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) nop lw $4,%got(_ZSt4cout)($28) lw $2,%got($LC6)($28) nop addiu $5,$2,%lo($LC6) lw $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $2,$0 move $sp,$fp lw $31,84($sp) lw $fp,80($sp) addiu $sp,$sp,88 j $31 nop .set macro .set reorder .end main $LFE957: .size main, .-main .align 2 .globl _Z5maxIsPii $LFB958 = . .set nomips16 .ent _Z5maxIsPii .type _Z5maxIsPii, @function _Z5maxIsPii: .frame $fp,24,$31 # vars= 8, regs= 1/0, args= 0, gp= 8 .mask 0x40000000,-4 .fmask 0x00000000,0 .set noreorder .set nomacro addiu $sp,$sp,-24 $LCFI4: sw $fp,20($sp) $LCFI5: move $fp,$sp movz $31,$31,$0 $LCFI6: sw $4,24($fp) sw $5,28($fp) sw $0,8($fp) sw $0,12($fp) b $L4 nop $L6: lw $2,12($fp) nop sll $2,$2,2 lw $3,24($fp) nop addu $2,$3,$2 lw $3,0($2) lw $2,8($fp) nop slt $2,$2,$3 beq $2,$0,$L5 nop lw $2,12($fp) nop sll $2,$2,2 lw $3,24($fp) nop addu $2,$3,$2 lw $2,0($2) nop sw $2,8($fp) $L5: lw $2,12($fp) nop addiu $2,$2,1 sw $2,12($fp) $L4: lw $3,12($fp) lw $2,28($fp) nop slt $2,$3,$2 andi $2,$2,0x00ff bne $2,$0,$L6 nop lw $2,8($fp) move $sp,$fp lw $fp,20($sp) addiu $sp,$sp,24 j $31 nop .set macro .set reorder .end _Z5maxIsPii $LFE958: .size _Z5maxIsPii, .-_Z5maxIsPii .align 2 .globl _Z5minIsPii $LFB959 = . .set nomips16 .ent _Z5minIsPii .type _Z5minIsPii, @function _Z5minIsPii: .frame $fp,24,$31 # vars= 8, regs= 1/0, args= 0, gp= 8 .mask 0x40000000,-4 .fmask 0x00000000,0 .set noreorder .set nomacro addiu $sp,$sp,-24 $LCFI7: sw $fp,20($sp) $LCFI8: move $fp,$sp movz $31,$31,$0 $LCFI9: sw $4,24($fp) sw $5,28($fp) li $2,32767 # 0x7fff sw $2,8($fp) sw $0,12($fp) b $L9 nop $L11: lw $2,12($fp) nop sll $2,$2,2 lw $3,24($fp) nop addu $2,$3,$2 lw $3,0($2) lw $2,8($fp) nop slt $2,$3,$2 beq $2,$0,$L10 nop lw $2,12($fp) nop sll $2,$2,2 lw $3,24($fp) nop addu $2,$3,$2 lw $2,0($2) nop sw $2,8($fp) $L10: lw $2,12($fp) nop addiu $2,$2,1 sw $2,12($fp) $L9: lw $3,12($fp) lw $2,28($fp) nop slt $2,$3,$2 andi $2,$2,0x00ff bne $2,$0,$L11 nop lw $2,8($fp) move $sp,$fp lw $fp,20($sp) addiu $sp,$sp,24 j $31 nop .set macro .set reorder .end _Z5minIsPii $LFE959: .size _Z5minIsPii, .-_Z5minIsPii .align 2 .globl _Z5avgIsPiiS_S_ $LFB960 = . .set nomips16 .ent _Z5avgIsPiiS_S_ .type _Z5avgIsPiiS_S_, @function _Z5avgIsPiiS_S_: .frame $fp,24,$31 # vars= 8, regs= 1/0, args= 0, gp= 8 .mask 0x40000000,-4 .fmask 0x00000000,0 .set noreorder .set nomacro addiu $sp,$sp,-24 $LCFI10: sw $fp,20($sp) $LCFI11: move $fp,$sp movz $31,$31,$0 $LCFI12: sw $4,24($fp) sw $5,28($fp) sw $6,32($fp) sw $7,36($fp) sw $0,8($fp) sw $0,12($fp) b $L14 nop $L15: lw $2,12($fp) nop sll $2,$2,2 lw $3,24($fp) nop addu $2,$3,$2 lw $2,0($2) lw $3,8($fp) nop addu $2,$3,$2 sw $2,8($fp) lw $2,12($fp) nop addiu $2,$2,1 sw $2,12($fp) $L14: lw $3,12($fp) lw $2,28($fp) nop slt $2,$3,$2 andi $2,$2,0x00ff bne $2,$0,$L15 nop lw $3,8($fp) lw $2,28($fp) nop bne $2,$0,1f div $0,$3,$2 break 7 1: mfhi $3 mflo $2 move $3,$2 lw $2,32($fp) nop sw $3,0($2) lw $3,8($fp) lw $2,28($fp) nop bne $2,$0,1f div $0,$3,$2 break 7 1: mfhi $2 move $3,$2 lw $2,36($fp) nop sw $3,0($2) move $sp,$fp lw $fp,20($sp) addiu $sp,$sp,24 j $31 nop .set macro .set reorder .end _Z5avgIsPiiS_S_ $LFE960: .size _Z5avgIsPiiS_S_, .-_Z5avgIsPiiS_S_ .align 2 $LFB964 = . .set nomips16 .ent _Z41__static_initialization_and_destruction_0ii .type _Z41__static_initialization_and_destruction_0ii, @function _Z41__static_initialization_and_destruction_0ii: .frame $fp,32,$31 # vars= 0, regs= 2/0, args= 16, gp= 8 .mask 0xc0000000,-4 .fmask 0x00000000,0 .set noreorder .cpload $25 .set nomacro addiu $sp,$sp,-32 $LCFI13: sw $31,28($sp) $LCFI14: sw $fp,24($sp) movz $31,$31,$0 $LCFI15: move $fp,$sp $LCFI16: .cprestore 16 sw $4,32($fp) sw $5,36($fp) lw $3,32($fp) li $2,1 # 0x1 bne $3,$2,$L19 nop lw $3,36($fp) li $2,65535 # 0xffff bne $3,$2,$L19 nop lw $2,%got(_ZStL8__ioinit)($28) nop addiu $4,$2,%lo(_ZStL8__ioinit) lw $2,%call16(_ZNSt8ios_base4InitC1Ev)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) nop lw $2,%got(_ZNSt8ios_base4InitD1Ev)($28) nop move $4,$2 lw $2,%got(_ZStL8__ioinit)($28) nop addiu $5,$2,%lo(_ZStL8__ioinit) lw $6,%got(__dso_handle)($28) lw $2,%call16(__cxa_atexit)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) $L19: move $sp,$fp lw $31,28($sp) lw $fp,24($sp) addiu $sp,$sp,32 j $31 nop .set macro .set reorder .end _Z41__static_initialization_and_destruction_0ii $LFE964: .size _Z41__static_initialization_and_destruction_0ii, .-_Z41__static_initialization_and_destruction_0ii .align 2 $LFB965 = . .set nomips16 .ent _GLOBAL__I_main .type _GLOBAL__I_main, @function _GLOBAL__I_main: .frame $fp,32,$31 # vars= 0, regs= 2/0, args= 16, gp= 8 .mask 0xc0000000,-4 .fmask 0x00000000,0 .set noreorder .cpload $25 .set nomacro addiu $sp,$sp,-32 $LCFI17: sw $31,28($sp) $LCFI18: sw $fp,24($sp) movz $31,$31,$0 $LCFI19: move $fp,$sp $LCFI20: .cprestore 16 li $4,1 # 0x1 li $5,65535 # 0xffff lw $2,%got(_Z41__static_initialization_and_destruction_0ii)($28) nop addiu $2,$2,%lo(_Z41__static_initialization_and_destruction_0ii) move $25,$2 jalr $25 nop lw $28,16($fp) move $sp,$fp lw $31,28($sp) lw $fp,24($sp) addiu $sp,$sp,32 j $31 nop .set macro .set reorder .end _GLOBAL__I_main $LFE965: .size _GLOBAL__I_main, .-_GLOBAL__I_main .section .ctors,"aw",@progbits .align 2 .word _GLOBAL__I_main .weakref _ZL20__gthrw_pthread_oncePiPFvvE,pthread_once .weakref _ZL27__gthrw_pthread_getspecificj,pthread_getspecific .weakref _ZL27__gthrw_pthread_setspecificjPKv,pthread_setspecific .weakref _ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_,pthread_create .weakref _ZL20__gthrw_pthread_joinmPPv,pthread_join .weakref _ZL21__gthrw_pthread_equalmm,pthread_equal .weakref _ZL20__gthrw_pthread_selfv,pthread_self .weakref _ZL22__gthrw_pthread_detachm,pthread_detach .weakref _ZL22__gthrw_pthread_cancelm,pthread_cancel .weakref _ZL19__gthrw_sched_yieldv,sched_yield .weakref _ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t,pthread_mutex_lock .weakref _ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t,pthread_mutex_trylock .weakref _ZL31__gthrw_pthread_mutex_timedlockP15pthread_mutex_tPK8timespec,pthread_mutex_timedlock .weakref _ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t,pthread_mutex_unlock .weakref _ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t,pthread_mutex_init .weakref _ZL29__gthrw_pthread_mutex_destroyP15pthread_mutex_t,pthread_mutex_destroy .weakref _ZL30__gthrw_pthread_cond_broadcastP14pthread_cond_t,pthread_cond_broadcast .weakref _ZL27__gthrw_pthread_cond_signalP14pthread_cond_t,pthread_cond_signal .weakref _ZL25__gthrw_pthread_cond_waitP14pthread_cond_tP15pthread_mutex_t,pthread_cond_wait .weakref _ZL30__gthrw_pthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec,pthread_cond_timedwait .weakref _ZL28__gthrw_pthread_cond_destroyP14pthread_cond_t,pthread_cond_destroy .weakref _ZL26__gthrw_pthread_key_createPjPFvPvE,pthread_key_create .weakref _ZL26__gthrw_pthread_key_deletej,pthread_key_delete .weakref _ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t,pthread_mutexattr_init .weakref _ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti,pthread_mutexattr_settype .weakref _ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t,pthread_mutexattr_destroy .section .eh_frame,"aw",@progbits $Lframe1: .4byte $LECIE1-$LSCIE1 $LSCIE1: .4byte 0x0 .byte 0x1 .globl __gxx_personality_v0 .ascii "zP" .uleb128 0x1 .sleb128 -4 .byte 0x1f .uleb128 0x5 .byte 0x0 .4byte __gxx_personality_v0 .byte 0xc .uleb128 0x1d .uleb128 0x0 .align 2 $LECIE1: $LSFDE1: .4byte $LEFDE1-$LASFDE1 $LASFDE1: .4byte $LASFDE1-$Lframe1 .4byte $LFB957 .4byte $LFE957-$LFB957 .uleb128 0x0 .byte 0x4 .4byte $LCFI0-$LFB957 .byte 0xe .uleb128 0x58 .byte 0x4 .4byte $LCFI2-$LCFI0 .byte 0x11 .uleb128 0x1e .sleb128 2 .byte 0x11 .uleb128 0x1f .sleb128 1 .byte 0x4 .4byte $LCFI3-$LCFI2 .byte 0xd .uleb128 0x1e .align 2 $LEFDE1: $LSFDE9: .4byte $LEFDE9-$LASFDE9 $LASFDE9: .4byte $LASFDE9-$Lframe1 .4byte $LFB964 .4byte $LFE964-$LFB964 .uleb128 0x0 .byte 0x4 .4byte $LCFI13-$LFB964 .byte 0xe .uleb128 0x20 .byte 0x4 .4byte $LCFI15-$LCFI13 .byte 0x11 .uleb128 0x1e .sleb128 2 .byte 0x11 .uleb128 0x1f .sleb128 1 .byte 0x4 .4byte $LCFI16-$LCFI15 .byte 0xd .uleb128 0x1e .align 2 $LEFDE9: $LSFDE11: .4byte $LEFDE11-$LASFDE11 $LASFDE11: .4byte $LASFDE11-$Lframe1 .4byte $LFB965 .4byte $LFE965-$LFB965 .uleb128 0x0 .byte 0x4 .4byte $LCFI17-$LFB965 .byte 0xe .uleb128 0x20 .byte 0x4 .4byte $LCFI19-$LCFI17 .byte 0x11 .uleb128 0x1e .sleb128 2 .byte 0x11 .uleb128 0x1f .sleb128 1 .byte 0x4 .4byte $LCFI20-$LCFI19 .byte 0xd .uleb128 0x1e .align 2 $LEFDE11: .ident "GCC: (Debian 4.4.5-8) 4.4.5"

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote