2013-11-03 1 views
0

세그먼트에 .byte var1을 만들었습니다. 그리고 지금 내 var1의 내용을 $ t1에 저장하려고합니다. 그렇게하려면 lb 강사 또는 la 강사를 사용해야합니까? 솔직히 말해서 두 가지 차이점을 파악할 수 없었습니다. 미리 감사드립니다. 여기 내 시도는 다음과 같습니다Mips, 변수에 저장된 문자를 등록하여 저장

.data 

var1: .byte '/' 

.text 

main: 
    lb $t2,var1 #I want to t2 stores '/' character. 

하나 더 질문 : beq $t1,$t2을 쓸 때, 그것은 두 adresses, 또는이 두 주소의 내용을 비교합니까?

답변

2
  1. lb$t2var1의 8 비트 값을로드한다. la은 sudo 명령으로서 메모리에있는 데이터의 전체 32 비트 주소를 $t2 (32 비트 아키텍처를 사용한다고 가정)으로로드합니다. MIPS 명령어에 대한 자세한 내용은 here을 참조하십시오.

  2. Beq$t1$t2의 두 값을 비교합니다. 이것들이 메모리 주소라면, 그 주소의 데이터가 아니라 주소를 비교할 것입니다.

+0

답장을 보내 주셔서 감사합니다. 나는 하나 더 질문한다. 나는'$ s1 var1'을했다고 가정합니다. 이 VAY에서 t1은 var1의 주소를 저장하고 있습니까? 그런 다음 동일한 주소를 $ t1 레지스터에 저장하여 var1의 시작점을 잃지 않고 변경할 수있게하려고합니다. 그렇게하기 위해,'la $ t1,0 ($ s1)'은 okey입니까? – caesar

+0

예, 작동합니다. 가능하다면'la $ t1 var1'으로 쓰는 것이 더 명확 할 수도 있습니다. (적어도 어셈블리만큼이나 분명합니다). – NULL

관련 문제