2014-10-19 11 views
0

Trap x26을 통해 트랩 호출로 사용될 서브 루틴을 작성했습니다. 내 서브 루틴에 대한 내 코드는 x3300 주소입니다. x3300에서 서브 루틴에 대한 실제 지침으로 점프하는 방법을 알아낼 수 없습니다. 간격이 JSR의 PC 오프셋 매개 변수보다 큽니다. 나는 x33 근처로 이동할 수 있도록 x26 근처에 코드를 추가 할 수 있다는 것을 알고 있지만 어떻게해야 할 지 생각지 않는다. 나는 트랩을 일반적으로 이해하는 것으로 뭔가를 놓치고 있다고 생각합니다.커스텀 LC-3 트랩 루틴 사용

여기 내 이해/트랩의 혼란입니다 : 그래서 x0000에서 - X00FF 트랩 벡터 테이블입니다. 예를 들어 TRAP x20을 호출하면 PC는 x20으로 이동하고 x20의 명령으로 실행을 계속합니다. (이것이 틀렸다면 알려주십시오.) LC-3의 x20 주소는 BRZ x0021 명령이므로 PC를 x21로 가져 오니 혼란 스럽습니다. x21에는 BRZ x52 명령이 있습니다. 이 브랜치가 x52와 PC에 더하여 실행될 때 명령은 TRAP x00입니다. 함정 20의 명령의 대부분은 말도 안되는 함정 명령으로 보입니다. 트랩 x00이 실행 된 후 프로그램은 xFD79로 이동합니다. 이것은 메모리가 x00 인 이래로 저를 정말로 혼란스럽게합니다. 또 다른 TRAP x00이 있습니다. 나에게 프로그램은 xFD79 대신에 x00으로 가야하는 것처럼 보인다.

누군가 나에게 설명해 주실 수 있습니까? 함정이 불릴 때 정확히 무엇이 진행되고 있습니까? 나는 그것이 실제로 명령어의 실제 코드가 실행되고 실행 된 메모리의 다른 주소로 갔다는 것을 알았지 만, 내가 본 것은 그것을 반영하지 않는다. 제가 지금 학교 프로젝트를 마칠 수 없기 때문에 어떤 도움이라도 대단히 감사하겠습니다.

감사합니다.

답변

0

"그렇다면 x0000부터 - X00FF는 트랩 벡터 테이블입니다. 예를 들어 TRAP x20을 호출하면 PC는 x20으로 이동하고 x20의 명령어로 실행을 계속합니다 (이것이 틀리면 알려주십시오!) "

이 그러나 다음 문장을 정확 ...

"나는 때문에 LC-3의 주소 X20에서 혼란 스러워요이 시점에서는 X21에 PC를 취하는 BRZ의 x0021 명령이다 "

BRz처럼 보이는 명령은 사실 지침이 아닙니다. 그것은 주소입니다! x0400은 상당히 쓸모없는 명령이 될 것입니다. PC 오프셋이 0이므로 다음 줄로갑니다. 대신 주소로 해석하고 트랩 호출의 일부로 해당 주소로 이동하면 나머지 트랩 지침을 찾을 수 있습니다.