MIPS관련 address 궁금한게 있습니다.
안녕하세요.
요즘 MIPS관련 공부를하고있는데요. 구글링을 하다보니
32 bit quantities in MIPS must be stored in memory at word-aligned address.라는 말과
the PC(Program Counter),which stores addresses of instructions must hold a word aligned address. 라는 설명을 보았습니다.
지금 이해가안되는것이 다음과 같습니다.
프로그램카운터를 통해 온 것과 Instruction memory에서 온것을 Add해줄때 왜 Instruction memory에서 온것을 shift left2를 해주는지 이해가 잘 안됩니다.
(프로그램카운터를 통해 온것과 Add를 해줄때만! Instructino memory에서 온것을 shift left 2를 해주는지 이해가 안갑니다)
-구글링을 해서 the PC(Program Counter),which stores addresses of instructions must hold a word aligned address. 와 같이 나와서 더 헷갈립니다.
=>PC에선 addresses of instruction을 byte address로 관리하기 때문인가요....? (MIPS안에 있는 PC라면 word aligned address기반이어야 할텐데요...흐)
이에대해 잘아시면 좀 도와주시면 감사하겠습니다!
음...
MIPS32에서 PC가 word aligned 인 것은, 잘 알고 계신 것처럼 MIPS32 instruction 자체가 32bit format이기 때문이구요... ARM의 경우는 thumb instruction이 half word인 것으로 알고 있는데... 이 경우에도 이 법칙이 적용되는지는 확인해볼 필요가 있겠네요.
물론 instruction size와는 별도로 아무데나 저장시킬 수도 있겠습니다만, 그럼 fetch-decode 과정에 더 시간이 걸리지 않을까.. 추측해봅니다. (일괄적으로 ++ 시키는 것과 위치를 별도로 찾아내는 과정이 포함되어 있는 것은 천지차이겠죠) :)
그건 그렇구... 저도 MIPS32 address 때문에 고생을 좀 해서... 이 질문을 유심히 봤습니다만... 질문의 요지가 잘 파악이 안되서요... ^^; instruction memory라는 것은 무엇을 말씀하시는 것인지요??? code 영역을 말씀하시는 것인가요???
예제 assemble code와 어떤 환경에서 돌리고 있는지 정도라도 올려주시면 참고가 되겠네요.
句日新, 日新 日新 又日新.