0
나는 아주 간단한 프로그램을 실행하려고하지만 난 오류가 계속 : Invalid language element
어셈블리 잘못된 언어 요소 MIPS
lw $t0, 0($a0) #load integer from $a0->$t0
beq $t0, 1, 1dimensional #branch if $t0=1
1dimensional:
do something
나는 오류가 발생하고 왜 이해하지 못할.
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html BEQ는 두 개의 레지스터 피연산자와 라벨을 취합니다. 즉각적인 것이 아닙니다. –
@PeterCordes'beq'가 pseudo-op [어셈블러가 그것을 지원하면'mars'가하기 때문에] 두번째 인수로 immediate를 사용하는 것은 _valid_입니다. 다음의 "실제"명령 시퀀스를 생성합니다 : addi $ at, $ zero, 1' /'beq $ at, $ t0,1dimensional'. –
아, 그래, 그럼 결국 http://stackoverflow.com/questions/16760255/why-we-cant-compare-bne-beq-a-register-with-an-immediate-assembly-mips의 복제본이 아닙니다. beq를 의사 연산으로 확장하면서 $ r1을 파괴 할 어셈블러를 사용한다면. 저에게는 정말 이상하게 보입니다.하지만 31 개의 아키텍처 레지스터가있을 때 OS가 비동기 적으로 clobber를 허용하는 것과 같이 일부는 낭비하는 것이 "ok"입니다. –