Beginner Errors On When Compiling a MIPS Assembly Source
assembly, mips
Solution
I think the problem is that you're using an older version of binutils which does not support the symbolic names for MIPS registers.
binutils 2.17 (as referenced in the cross-compilation instructions you linked to) does not understand `$v0`, `$a0` etc. (see this question).
However, if you are building the tools yourself anyway, a good solution would be to move to a later version of binutils: versions from 2.18 onwards do support symbolic register names. Your example assembles correctly with either 2.18 or the latest version, 2.20.
Problem
I'm trying to learn MIPS Assembly by learning MIPS Assembly Language Programming. In the book I have this code(extracted from the page 37 of the book): ``` .data prompt: .asciiz "\n Please Input a Value: " bye: .asciiz "\n Bye!" .globl main .text main: li $v0, 4 la $a0, prompt syscall li $v0, 5 syscall beqz $v0, end move $a0, $v0 li $v0, 1 syscall b main end: li $v0, 4 la $a0, bye syscall li $v0, 10 syscall ``` I have a cross-compiled binutils targeted to `mips-elf`, but when I've tried to Assemble the code, I got some errors ubuntu@eeepc:~/Desktop$ mips-elf-as test-mips.asm test-mips.asm: Assembler messages: test-mips.asm:8: Error: illegal operands 'li' test-mips.asm:9: Error: illegal operands 'la' test-mips.asm:12: Error: illegal operands 'li' test-mips.asm:14: Error: illegal operands 'beqz' test-mips.asm:15: Error: illegal operands 'move' test-mips.asm:16: Error: illegal operands 'li' test-mips.asm:22: Error: illegal operands 'li' test-mips.asm:23: Error: illegal operands 'la' test-mips.asm:26: Error: illegal operands 'li' ubuntu@eeepc:~/Desktop$ I'm using x86 Ubuntu Hardy Herron to cross-compile to MIPS What is wrong?