I'm doing this very basic assignment in MARS where I literally copy and past some code into a file and run it. However, for whatever reason, I keep getting this invalid language element error whenever I compile. Someone else has run the exact same program on their computer and it worked, so I'm wondering what's going on here. One thing I did notice is that in a tutorial, someone opened MARS with "OpenJDK Platform Binary" and I currently only have the option to open with Java SE Platform Binary. I have no idea if that's the issue, though.
.text.globl mainmain: subu $sp, $sp, 40 # stack push, 40 bytes sw $ra, 20($sp) # save return address register (sw = store word) sd $a0, 32($sp) # save registers $a0, $a1 (sd = store doubleword) sw $0, 24($sp) # sum = 0 sw $0, 28($sp) # i = 0loop: lw $t6, 28($sp) # i mul $t7, $t6, $t6 # i * i lw $t8, 24($sp) # sum addu $t9, $t8, $t7 # sum + i*i sw $t9, 24($sp) # sum = sum + i*i addu $t0, $t6, 1 # i + 1 sw $t0, 28($sp) # i = i + 1 ble $t0, 100, loop # if (i <= 100) goto loop la $a0, str1 jal Print_string # print the string whose starting address is in register $a0 lw $a0, 24($sp) # sum jal Print_integer # print the integer in register $a0 la $a0, str2 jal Print_string # print the string whose starting address is in register $a0 # this exit sequence can be used with QtSPIM, but not with MARS# move $v0, $0 # return status 0# lw $ra, 20($sp) # restore saved return address# addu $sp, $sp, 40 # stack pop (important - same 40 bytes as before!)# jr $ra # return from main() to the OS # MARS likes this, but we need to demo Exit2# jal Exit # end the program, no explicit return status # MARS likes this move $a0, $0 jal Exit2 # end the program, with return status from register a0# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .data .align 0str1: .asciiz "The sum from 0 .. 100 is :"str2: .asciiz ":\n"# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Wrapper functions around some of the system calls# See P&H COD, Fig. A.9.1, for the complete list. .text# .align 2 # MARS doesn't like this .globl Print_integerPrint_integer: # print the integer in register $a0 li $v0, 1 syscall jr $ra .globl Print_stringPrint_string: # print the string whose starting address is in register $a0 li $v0, 4 syscall jr $ra .globl ExitExit: # end the program, no explicit return status li $v0, 10 syscall jr $ra # this instruction is never executed .globl Exit0Exit0: # end the program, default return status li $a0, 0 # return status 0 li $v0, 17 syscall jr $ra # this instruction is never executed .globl Exit2Exit2: # end the program, with return status from register $a0 li $v0, 17 syscall jr $ra # this instruction is never executed# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
error message:
Invalid language element: $ra Error in C:\Users\Roger\Documents\Programs\version4.asm line 3 column 1: .globl mainInvalid language element: .globl Error in C:\Users\Roger\Documents\Programs\version4.asm line 5 column 1: subu $sp, $sp, 40 # stack push, 40 bytesInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 5 column 9: subu $sp, $sp, 40 # stack push, 40 bytesInvalid language element: subu Error in C:\Users\Roger\Documents\Programs\version4.asm line 5 column 27: subu $sp, $sp, 40 # stack push, 40 bytesInvalid language element: 40 Error in C:\Users\Roger\Documents\Programs\version4.asm line 6 column 1: sw $ra, 20($sp) # save return address register (sw = store word)Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 6 column 9: sw $ra, 20($sp) # save return address register (sw = store word)Invalid language element: sw Error in C:\Users\Roger\Documents\Programs\version4.asm line 6 column 29: sw $ra, 20($sp) # save return address register (sw = store word)Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 7 column 1: sd $a0, 32($sp) # save registers $a0, $a1 (sd = store doubleword)Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 7 column 9: sd $a0, 32($sp) # save registers $a0, $a1 (sd = store doubleword)Invalid language element: sd Error in C:\Users\Roger\Documents\Programs\version4.asm line 7 column 29: sd $a0, 32($sp) # save registers $a0, $a1 (sd = store doubleword)Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 8 column 1: sw $0, 24($sp) # sum = 0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 8 column 9: sw $0, 24($sp) # sum = 0Invalid language element: sw Error in C:\Users\Roger\Documents\Programs\version4.asm line 8 column 28: sw $0, 24($sp) # sum = 0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 9 column 1: sw $0, 28($sp) # i = 0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 9 column 9: sw $0, 28($sp) # i = 0Invalid language element: sw Error in C:\Users\Roger\Documents\Programs\version4.asm line 9 column 28: sw $0, 28($sp) # i = 0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 11 column 1: lw $t6, 28($sp) # iInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 11 column 9: lw $t6, 28($sp) # iInvalid language element: lw Error in C:\Users\Roger\Documents\Programs\version4.asm line 11 column 29: lw $t6, 28($sp) # iInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 12 column 1: mul $t7, $t6, $t6 # i * iInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 12 column 9: mul $t7, $t6, $t6 # i * iInvalid language element: mul Error in C:\Users\Roger\Documents\Programs\version4.asm line 12 column 27: mul $t7, $t6, $t6 # i * iInvalid language element: $t6 Error in C:\Users\Roger\Documents\Programs\version4.asm line 13 column 1: lw $t8, 24($sp) # sumInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 13 column 9: lw $t8, 24($sp) # sumInvalid language element: lw Error in C:\Users\Roger\Documents\Programs\version4.asm line 13 column 29: lw $t8, 24($sp) # sumInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 14 column 1: addu $t9, $t8, $t7 # sum + i*iInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 14 column 9: addu $t9, $t8, $t7 # sum + i*iInvalid language element: addu Error in C:\Users\Roger\Documents\Programs\version4.asm line 14 column 27: addu $t9, $t8, $t7 # sum + i*iInvalid language element: $t7 Error in C:\Users\Roger\Documents\Programs\version4.asm line 15 column 1: sw $t9, 24($sp) # sum = sum + i*iInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 15 column 9: sw $t9, 24($sp) # sum = sum + i*iInvalid language element: sw Error in C:\Users\Roger\Documents\Programs\version4.asm line 15 column 29: sw $t9, 24($sp) # sum = sum + i*iInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 16 column 1: addu $t0, $t6, 1 # i + 1Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 16 column 9: addu $t0, $t6, 1 # i + 1Invalid language element: addu Error in C:\Users\Roger\Documents\Programs\version4.asm line 16 column 27: addu $t0, $t6, 1 # i + 1Invalid language element: 1 Error in C:\Users\Roger\Documents\Programs\version4.asm line 17 column 1: sw $t0, 28($sp) # i = i + 1Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 17 column 9: sw $t0, 28($sp) # i = i + 1Invalid language element: sw Error in C:\Users\Roger\Documents\Programs\version4.asm line 17 column 29: sw $t0, 28($sp) # i = i + 1Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 18 column 1: ble $t0, 100, loop # if (i <= 100) goto loopInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 18 column 9: ble $t0, 100, loop # if (i <= 100) goto loopInvalid language element: ble Error in C:\Users\Roger\Documents\Programs\version4.asm line 18 column 27: ble $t0, 100, loop # if (i <= 100) goto loopInvalid language element: loop Error in C:\Users\Roger\Documents\Programs\version4.asm line 20 column 1: la $a0, str1Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 20 column 9: la $a0, str1Invalid language element: la Error in C:\Users\Roger\Documents\Programs\version4.asm line 21 column 1: jal Print_string # print the string whose starting address is in register $a0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 21 column 9: jal Print_string # print the string whose starting address is in register $a0Invalid language element: jal Error in C:\Users\Roger\Documents\Programs\version4.asm line 21 column 17: jal Print_string # print the string whose starting address is in register $a0Invalid language element: Print_string Error in C:\Users\Roger\Documents\Programs\version4.asm line 22 column 1: lw $a0, 24($sp) # sumInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 22 column 9: lw $a0, 24($sp) # sumInvalid language element: lw Error in C:\Users\Roger\Documents\Programs\version4.asm line 22 column 29: lw $a0, 24($sp) # sumInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 23 column 1: jal Print_integer # print the integer in register $a0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 23 column 9: jal Print_integer # print the integer in register $a0Invalid language element: jal Error in C:\Users\Roger\Documents\Programs\version4.asm line 23 column 17: jal Print_integer # print the integer in register $a0Invalid language element: Print_integer Error in C:\Users\Roger\Documents\Programs\version4.asm line 24 column 1: la $a0, str2Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 24 column 9: la $a0, str2Invalid language element: la Error in C:\Users\Roger\Documents\Programs\version4.asm line 25 column 1: jal Print_string # print the string whose starting address is in register $a0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 25 column 9: jal Print_string # print the string whose starting address is in register $a0Invalid language element: jal Error in C:\Users\Roger\Documents\Programs\version4.asm line 25 column 17: jal Print_string # print the string whose starting address is in register $a0Invalid language element: Print_string Error in C:\Users\Roger\Documents\Programs\version4.asm line 27 column 1: # this exit sequence can be used with QtSPIM, but not with MARSInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 33 column 1: # MARS likes this, but we need to demo Exit2Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 36 column 1: # MARS likes thisInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 37 column 1: move $a0, $0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 37 column 9: move $a0, $0Invalid language element: move Error in C:\Users\Roger\Documents\Programs\version4.asm line 38 column 1: jal Exit2 # end the program, with return status from register a0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 38 column 9: jal Exit2 # end the program, with return status from register a0Invalid language element: jal Error in C:\Users\Roger\Documents\Programs\version4.asm line 38 column 17: jal Exit2 # end the program, with return status from register a0Invalid language element: Exit2 Error in C:\Users\Roger\Documents\Programs\version4.asm line 42 column 1: .dataInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 43 column 1: .align 0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 43 column 9: .align 0Invalid language element: .align Error in C:\Users\Roger\Documents\Programs\version4.asm line 46 column 1: .asciiz "The sum from 0 .. 100 is :"Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 48 column 1: .asciiz ":\n"Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 55 column 1: .textInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 58 column 1: .globl Print_integerInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 58 column 9: .globl Print_integerInvalid language element: .globl Error in C:\Users\Roger\Documents\Programs\version4.asm line 59 column 15: Print_integer: # print the integer in register $a0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 60 column 1: li $v0, 1Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 60 column 9: li $v0, 1Invalid language element: li Error in C:\Users\Roger\Documents\Programs\version4.asm line 61 column 1: syscallInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 62 column 1: jr $raInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 62 column 9: jr $raInvalid language element: jr Error in C:\Users\Roger\Documents\Programs\version4.asm line 64 column 1: .globl Print_stringInvalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 64 column 9: .globl Print_stringInvalid language element: .globl Error in C:\Users\Roger\Documents\Programs\version4.asm line 65 column 14: Print_string: # print the string whose starting address is in register $a0Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 66 column 1: li $v0, 4Invalid language element: Error in C:\Users\Roger\Documents\Programs\version4.asm line 66 column 9: li $v0, 4Invalid language element: li Error in C:\Users\Roger\Documents\Programs\version4.asm line 67 column 1: syscallInvalid language element: Error in line 68 column 1: Error Limit of 200 exceeded.Assemble: operation completed with errors.
I tried to compile the copied and pasted program, and it in fact, did not compile.