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 main
main:
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 = 0
loop:
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 0
str1:
.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_integer
Print_integer: # print the integer in register $a0
li $v0, 1
syscall
jr $ra
.globl Print_string
Print_string: # print the string whose starting address is in register $a0
li $v0, 4
syscall
jr $ra
.globl Exit
Exit: # end the program, no explicit return status
li $v0, 10
syscall
jr $ra # this instruction is never executed
.globl Exit0
Exit0: # end the program, default return status
li $a0, 0 # return status 0
li $v0, 17
syscall
jr $ra # this instruction is never executed
.globl Exit2
Exit2: # 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 main
Invalid language element: .globl
Error in C:\Users\Roger\Documents\Programs\version4.asm line 5 column 1: subu $sp, $sp, 40 # stack push, 40 bytes
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 5 column 9: subu $sp, $sp, 40 # stack push, 40 bytes
Invalid language element: subu
Error in C:\Users\Roger\Documents\Programs\version4.asm line 5 column 27: subu $sp, $sp, 40 # stack push, 40 bytes
Invalid 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 = 0
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 8 column 9: sw $0, 24($sp) # sum = 0
Invalid language element: sw
Error in C:\Users\Roger\Documents\Programs\version4.asm line 8 column 28: sw $0, 24($sp) # sum = 0
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 9 column 1: sw $0, 28($sp) # i = 0
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 9 column 9: sw $0, 28($sp) # i = 0
Invalid language element: sw
Error in C:\Users\Roger\Documents\Programs\version4.asm line 9 column 28: sw $0, 28($sp) # i = 0
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 11 column 1: lw $t6, 28($sp) # i
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 11 column 9: lw $t6, 28($sp) # i
Invalid language element: lw
Error in C:\Users\Roger\Documents\Programs\version4.asm line 11 column 29: lw $t6, 28($sp) # i
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 12 column 1: mul $t7, $t6, $t6 # i * i
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 12 column 9: mul $t7, $t6, $t6 # i * i
Invalid language element: mul
Error in C:\Users\Roger\Documents\Programs\version4.asm line 12 column 27: mul $t7, $t6, $t6 # i * i
Invalid language element: $t6
Error in C:\Users\Roger\Documents\Programs\version4.asm line 13 column 1: lw $t8, 24($sp) # sum
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 13 column 9: lw $t8, 24($sp) # sum
Invalid language element: lw
Error in C:\Users\Roger\Documents\Programs\version4.asm line 13 column 29: lw $t8, 24($sp) # sum
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 14 column 1: addu $t9, $t8, $t7 # sum + i*i
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 14 column 9: addu $t9, $t8, $t7 # sum + i*i
Invalid language element: addu
Error in C:\Users\Roger\Documents\Programs\version4.asm line 14 column 27: addu $t9, $t8, $t7 # sum + i*i
Invalid language element: $t7
Error in C:\Users\Roger\Documents\Programs\version4.asm line 15 column 1: sw $t9, 24($sp) # sum = sum + i*i
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 15 column 9: sw $t9, 24($sp) # sum = sum + i*i
Invalid language element: sw
Error in C:\Users\Roger\Documents\Programs\version4.asm line 15 column 29: sw $t9, 24($sp) # sum = sum + i*i
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 16 column 1: addu $t0, $t6, 1 # i + 1
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 16 column 9: addu $t0, $t6, 1 # i + 1
Invalid language element: addu
Error in C:\Users\Roger\Documents\Programs\version4.asm line 16 column 27: addu $t0, $t6, 1 # i + 1
Invalid language element: 1
Error in C:\Users\Roger\Documents\Programs\version4.asm line 17 column 1: sw $t0, 28($sp) # i = i + 1
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 17 column 9: sw $t0, 28($sp) # i = i + 1
Invalid language element: sw
Error in C:\Users\Roger\Documents\Programs\version4.asm line 17 column 29: sw $t0, 28($sp) # i = i + 1
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 18 column 1: ble $t0, 100, loop # if (i <= 100) goto loop
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 18 column 9: ble $t0, 100, loop # if (i <= 100) goto loop
Invalid language element: ble
Error in C:\Users\Roger\Documents\Programs\version4.asm line 18 column 27: ble $t0, 100, loop # if (i <= 100) goto loop
Invalid language element: loop
Error in C:\Users\Roger\Documents\Programs\version4.asm line 20 column 1: la $a0, str1
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 20 column 9: la $a0, str1
Invalid 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 $a0
Invalid 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 $a0
Invalid 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 $a0
Invalid language element: Print_string
Error in C:\Users\Roger\Documents\Programs\version4.asm line 22 column 1: lw $a0, 24($sp) # sum
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 22 column 9: lw $a0, 24($sp) # sum
Invalid language element: lw
Error in C:\Users\Roger\Documents\Programs\version4.asm line 22 column 29: lw $a0, 24($sp) # sum
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 23 column 1: jal Print_integer # print the integer in register $a0
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 23 column 9: jal Print_integer # print the integer in register $a0
Invalid language element: jal
Error in C:\Users\Roger\Documents\Programs\version4.asm line 23 column 17: jal Print_integer # print the integer in register $a0
Invalid language element: Print_integer
Error in C:\Users\Roger\Documents\Programs\version4.asm line 24 column 1: la $a0, str2
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 24 column 9: la $a0, str2
Invalid 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 $a0
Invalid 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 $a0
Invalid 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 $a0
Invalid 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 MARS
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 33 column 1: # MARS likes this, but we need to demo Exit2
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 36 column 1: # MARS likes this
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 37 column 1: move $a0, $0
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 37 column 9: move $a0, $0
Invalid 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 a0
Invalid 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 a0
Invalid 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 a0
Invalid language element: Exit2
Error in C:\Users\Roger\Documents\Programs\version4.asm line 42 column 1: .data
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 43 column 1: .align 0
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 43 column 9: .align 0
Invalid 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: .text
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 58 column 1: .globl Print_integer
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 58 column 9: .globl Print_integer
Invalid language element: .globl
Error in C:\Users\Roger\Documents\Programs\version4.asm line 59 column 15: Print_integer: # print the integer in register $a0
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 60 column 1: li $v0, 1
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 60 column 9: li $v0, 1
Invalid language element: li
Error in C:\Users\Roger\Documents\Programs\version4.asm line 61 column 1: syscall
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 62 column 1: jr $ra
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 62 column 9: jr $ra
Invalid language element: jr
Error in C:\Users\Roger\Documents\Programs\version4.asm line 64 column 1: .globl Print_string
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 64 column 9: .globl Print_string
Invalid 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 $a0
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 66 column 1: li $v0, 4
Invalid language element:
Error in C:\Users\Roger\Documents\Programs\version4.asm line 66 column 9: li $v0, 4
Invalid language element: li
Error in C:\Users\Roger\Documents\Programs\version4.asm line 67 column 1: syscall
Invalid 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.