그냥 내 클래스 중 하나에 대한 어셈블리를 배우기 시작했고이 코드 세그먼트에 대해 약간 혼란 스럽습니다. 이것은 MIPS 지침에서 C로 번역 할 것을 요구하는 교과서 질문에서 비롯됩니다. 나머지 질문은 첨부 된 이미지에 있습니다.MIPS 어셈블리 코드 세그먼트 이해
위의 MIPS 어셈블리 지침의 경우 해당 C 문은 무엇입니까? 변수 f, g, h, i 및 j는 각각 레지스터 $ s0, $ s1, $ s2, $ s3 및 $ s4에 할당된다고 가정합니다. 배열 A와 B의 기본 주소가 각각 레지스터 $ s6과 $ s7에 있다고 가정합니다.
sll $t0, $s0, 2 # $t0 = f * 4
add $t0, $s6, $t0 # $t0 = &A[f]
sll $t1, $s1, 2 # $t1 = g * 4
add $t0, $s6, $t0 # $t1 = &B[g]
lw $s0, 0($t0) # f = A[f]
addi $t2, $t0, 4
lw $t0, 0($t2)
add $t0, $t0, $s0
sw $t0, 0($t1)
나는 몇 가지 MIPS 지침을 기본적으로 이해하고 있지만 솔직히 말해서 배열에 관한 내용은 다소 혼란 스럽다. 여기 누군가가 올바른 방향으로 나를 가리킬 수 있습니까? 감사!
그래서이 코드가하는 일을 자신에게 설명 할 수 있습니까? –
나는 여기서 완전히 틀릴 수도 있지만, 단순히 주석 레지스터에 t2에 A [f + 4]의 값을 할당하면 마지막으로 주석 처리 된 명령 뒤에 첫 번째 추가 명령이 생깁니 까? – purdoo
'A'의 데이터 유형을 실제로 알지 못하기 때문에 말하기 어렵습니다 .. 질문에 실수가없는 경우 4 바이트 너비 인 것 같습니다. –