나는 NIOS II의 IDE에서 MIPS 32 비트 어셈블리를 배우고 내가 R4 및 R5에 저장된 두 숫자를 곱 완벽한 작업 서브 루틴을 가지고와 R2의 결과를 반환했습니다이 서브 루틴을 호출하는 방법?
.global muladd # makes label "main" globally known
.text # Instructions follow
.align 2 # Align instructions to 4-byte words
muladd:
movi r2, 0 # total = 0
movi r8, 0 # i = 0
L1: # if(i >= a) goto L2
bge r8, r4, L2 # a i r4
# total = total + b
add r2, r2, r5 # öka b med r5
addi r8, r8, 1 # i = i + 1
br L1 # goto L1
L2: # return(total)
ret
을 어떻게 할 수 서브 루틴을 호출하고 그 내용을 인쇄하여 예상대로 작동하는지 확인하십시오. 이것은 첫 번째 서브 루틴이고 전에 서브 루틴을 호출 한 적이 없으므로 모든 것을 즉시 이해하지 못하면 나를 용서해주십시오.
환경 ???? 어셈블러 ?? – perilbrain
@Anon ymous 코멘트 주셔서 감사합니다. 나는 환경과 어셈블러에 관한 더 많은 정보를 가지고 질문을 업데이트했다. Altera DE2 개발 보드에서 32 비트 MIPS이고, 사용하는 IDE는 Nios II로 불리며, 사용 된 프로세서의 이름이기도합니다. 원하는 경우 더 많은 질문을하십시오. –
그런 환경에 결코 대처하지 말고 elf를 생성한다면 [int 0x80] (http://asm.sourceforge.net/articles/linasm.html)을 사용하십시오. 또한 루틴을 호출하기 위해서는'call' 명령이 있어야합니다. '점프 '명령. – perilbrain