주소 0x20000004에서 점프 명령이 있다고 가정합니다. 자, 내가 알고 있듯이 점프 간격은 PC 값과 관련이 없지만 32 비트 레지스터 최대 값의 약 1/16의 절대 간격입니다. 이제는 점프 명령이 기계어 코드에서 어떻게 구성되는지를 고려해 볼 때,이 특정 경우에 최대 후진 점프는 1 명령이거나 0x20000000을 주소 지정합니다. 반대의 경우 : 주소 0x1FFFFFFC에서 명령을 건너 뛰고 0x20000004를 주소 지정하기 위해 2 개의 명령보다 먼저 건너 뛰고 싶습니다. 그게 가능하지 않니? 어셈블러는이 두 가지 경우 중 하나에 지침을 배치하지 않는 방법은 무엇입니까? 편집 : 고정 약간의 오차MIPS 점프 명령과 절대 값 결과
답변
- 타겟 어드레스의 하위 28 비트가
J
명령어의 26 개 최하위 비트가 설정되고, 왼쪽으로 2 비트 시프트. - 대상 주소의 상위 4 비트는 분기 지연 슬롯의 명령어 주소 중 최상위 4 비트로 설정됩니다.
따라서 분기 지연 슬롯의 명령어와 동일한 256MB 영역 내 어디에서나 단어 단위로 점프 할 수 있습니다. 실제로는 J
명령어가 256MB 영역의 마지막 워드에있는 경우를 제외하고는 J
명령어와 동일한 256MB 영역 내의 아무 곳으로도 이동할 수있는 것과 같습니다.
그래, 점프 지시와 목적지가 2 개의 다른 지역에 있다면, 비록 1 개의 지시에 의해 분리 되더라도, 당신은 점프를 할 수 없다는 나의 hypotesis를 확인하고 있단 말인가? – Nicholas
_ "점프 명령과 대상이 2 개의 다른 영역에있는 경우 1 명령으로 분리해도 점프를 할 수 없습니까?"_ 점프 명령이 마지막 단어에있는 특정 경우에 가능합니다. 256 MB 영역. – Michael
PC 값이 가져 오는 과정에서 PC + 4로 바뀌므로 다음 지역의 첫 번째 주소가되므로이 경우가 맞습니까? – Nicholas
- 1. MIPS 점프 문제 점프
- 2. 점프 명령과 비교 디버그
- 3. Mips 프로그래밍 점프 문제
- 4. 점프 명령의 MIPS 범위
- 5. MIPS : 점프 명령어 코드 알아보기
- 6. masm에서 절대 점프
- 7. MIPS - 값
- 8. 절대 위치 내부 절대 값
- 9. omreport 명령 및 snmpwalk 명령과 다른 결과
- 10. 메모리 주소에서 MIPS 반환 값
- 11. MIPS : 콘솔에 레지스터 값 인쇄
- 12. MIPS 레지스터의 값으로 오프셋 값
- 13. MIPS - 분기 및 점프 명령어의 주소 값을 찾는 방법
- 14. 위치 절대 값 : 음수 값
- 15. j (점프) 명령이 메모리에서 얼마나 멀리 점프 할 수 있습니까? (MIPS)
- 16. 지수의 복소수의 심피 절대 값
- 17. JQuery가 절대 절대 값 아래로 떨어졌습니다.
- 18. 절대 값 산출
- 19. TCL의 절대 값
- 20. GRBVar의 절대 값
- 21. 위치 : Firefox의 절대 값
- 22. vb.net의 절대 값
- 23. cplex의 절대 값 C++
- 24. 이진 절대 값
- 25. Matlab 절대 값 제곱
- 26. 절대 값 OCaml의
- 27. EntityFunctions 절대 값
- 28. 절대 값 얻기 java.nio.Path
- 29. 난수 생성기의 절대 값
- 30. 포스트 그레스의 절대 값
_ "이 특별한 경우에 최대 후진 점프가 4 가지 명령어임을 의미합니까?" 그 생각은 어디서 났니? _ "또는 주소 0x20000000?"_ 각 명령어는 1 바이트가 아닌 4 바이트입니다. _ "0x1FFFFFFE 번지에서 명령어 점프"_ 명령어는 워드로 정렬되어야하므로 불가능합니다. – Michael
일반적으로 그것은 섹션을 배치하는 링커이고, 이것들은 충분히 큰 범위이므로 일반적으로 모든 코드 (하나 이상의 모듈)를 하나의 단일 코드로 채우는 데 아무런 문제가 없습니다. 덧붙여 말하자면, GNU ld는 버그가있는 것처럼 보입니다.이 시나리오가 강제로 실행된다면 경고 없이도 점프가 잘립니다. – Jester