2011-08-09 3 views
0

나는 내 과제를 해결하는 데 어려움을 겪고있다. 여기레이블 주소 계산

는 MIPS 어셈블리 언어 코드의 다음 조각을 고려,이 상태 것입니다 :

start: add $t1, $t2, $t3 
     addi $t1, $t1, 10 
     add $t4, $t2, $t2 
     add $t6, $t3, $t3 
     beq $t1, $t4, q_final 
middle: add $t1, $0, $0 
     bne $t6, $t4, s_final 
     add $t7, $t7, $t7 
j final 
q_final: slt $t1, $t4, $t6 
s_final: add $t7, $t7, $t1 
final: jr $ra 

A) 레이블의 시작은 값 100 (십진수 의 모든 번호가있는 경우 표기법), 레이블 중간, q_final 및 최종으로 지정된 주소는 무엇입니까? 진행 방법과 혼동 스럽습니다. 각 문장에 4를 붙이면 다른 레이블의 가치가 부여 될 것이라고 생각했습니다. 이 일을하는 또 다른 좋은 방법이 있습니까?

미리 감사드립니다.

답변

1

진행 방법과 혼동 스럽습니다. 각 문을 에 4를 추가하면 다른 레이블의 값이 부여됩니다. 이게 더 다른 좋은 방법이 있습니까?

더 간단합니다 (mips!). 각 명령어가 4 바이트를 필요로한다면, 그 정도면 충분합니다.

100:  add $t1, $t2, $t3 
104:  addi $t1, $t1, 10 
108:  add $t4, $t2, $t2 
112:  add $t6, $t3, $t3 
116:  beq $t1, $t4, 132 
120:  add $t1, $0, $0 
124:  bne $t6, $t4, 136 
128:  add $t7, $t7, $t7 

132:  slt $t1, $t4, $t6 
136:  add $t7, $t7, $t1 
140:  jr $ra 

그런데 누가 십진법으로 메모리 주소를 부여합니까?

+0

그래서 나는 실제로 혼란 스러웠습니다. 나는 이것이 실제로 주소인지 또는 다른 것인지 궁금해하고있었습니다. –

+0

Yeap, 레이블은 메모리 주소 일뿐입니다. – Tom

+0

레이블을 추가하지 않은 이유를 자세히 설명해 주실 수 있습니까? –