swi

서정민 2010.04.14 01:26 조회 수 : 9421

PRE

    cpsr = nzcVqift_USER
    pc = 0x00008000
    lr = 0x003fffff; lr = r14
    r0 = 0x12

 

0x00008000 SWI 0x123456

 

POST

    cpsr = nzcVqIft_SVC
    spsr = nzcVqift_USER
    pc = 0x00000008
    lr = 0x00008004
    r0 = 0x12

이 코드 다시 좀 잘 볼필요가 있을듯해서요.

일단 cpsr은 살짝 미뤄두고...

벡터테이블 표2.6을 참고하면 SWI가 0x00000008번지라고 써있는걸 기억하구요.

SWI 0x123456

이 명령이 0x00008000에 존재한다 하고요.

그게 이소리더군요.

 

0x00008000 SWI 0x123456

 

그리고 나서 swi 명령이 수행되면

pc가 SWI의 벡터테이블 주소로 바뀌고

lr은 swi명령이 있던 0x00008000에 +4를 더한 주소를 가지고 있다는 군요.

그리고 책대로 이 lr주소를 통해 swi number를 얻게 된다는 군요.

요렇게...

SWI_Number = <SWI instruction> AND NOT(0xff000000)

 

자세한 swi넘버를 얻는 방법은 ex 3.25에 나와있습니다.

거기서

; Read the SWI instruction
LDR r10, [lr, #-4]

뭐 이건 현재 swi명령어 주소에서 4를 더한게 lr 이라고 했으니깐 lr에서 4를 빼면 swi명령어주소를 알수 있겠죵.
; Mask off top 8 bits
BIC r10, r10, #0xff000000

 

cond-4비트 + swi 명령어 4비트 + 24비트 => 32비트...

뭐 구지 쓰자면 [0bxxxx] [0b1111][0x123456] 

swi명령어를 찾아 읽어온후  BIC을 하여 cond와 명령어 코드빼고 SWI 번호를 가지고 있는 하위 24비트만 빼서 r10에 넣으라는 말이겠죠.

그리고 3.4절 마지막에 이런 글이 있네요.

그 r10으로 적절한 SWI서비스 루틴을 호출하기 위해 SWI핸들러에서 사용된다고.

 

 r0로 함수를 찾을거냐 0x123456으로 찾을거냐..에 대해 약간의 혼돈이 있었던거 같은데.

적절한 함수를 찾는건 0x123456인거 같네요.

 

 근데 이거 나만 몰랐던거 아닌지 몰라~ -_-;;;

 

암튼.

자기전 스위스칼로 손톱때파다가... 스위스 스위.. 스우... swi?

가 갑자기 생각나 다시 한번 봤드만...

오오옷. 우리 그냥 넘어간거 꽤 되더군요.

 

다음주 스터디에는 서로서로 질문 많이 합시다.

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2197
1645 4월 19일 스터디 일정!!!(필독) [7] 김남표 2008.04.15 9507
1644 4/18 스터디 참석 확인 부탁드립니다. [8] 석헌영 2009.04.16 9499
1643 [re] 4/18 스터디는 한 주 쉬는 것으로 하겠습니다. 석헌영 2009.04.17 9490
1642 프로세스 context와 인터럽트 context에 대한 생각.. [5] 이종인 2011.04.25 9489
1641 3/21일 스터디 참석 확인 [6] 석헌영 2009.03.20 9486
1640 모니터 케이블 [1] 임연재 2008.11.05 9462
1639 5/2 스터디 참석 확인 부탁드립니다. [3] 석헌영 2009.04.30 9450
1638 TTBCR과 TTBR 정리 [9] 신C 2013.07.17 9445
1637 맡은부분(get 관련) Report 이민호 2008.11.06 9433
1636 이번주 스터디는 쉬는 것이겠죠??^^* 글구.. 앞으로의 진행에 대해.. [3] 한상은 2008.04.01 9428
» swi [6] 서정민 2010.04.14 9421
1634 "211.239.151.239" 서버에 접속할 수가 없나요?? [1] 김정수 2008.04.29 9403
1633 날씨가 엄청 춥네요... [3] 한상은 2008.12.05 9380
1632 2월의 마지막날 (2/28) 스터디 참석 하실분. [6] 석헌영 2009.02.26 9360
1631 5월2일 스터디 내용 [2] 이상철 2009.05.04 9353
1630 11월 15일 모임 [1] 조용락 2008.11.18 9349
1629 이번 주 참석여부 확인 [3] 김기태 2009.01.29 9348
1628 각 자 조사할 내용 [1] 조용락 2008.11.26 9347
1627 [ARM 중] 이슈 정리 [9] 유경환 2011.09.25 9332
1626 12월13일 모임~~ [2] 조용락 2008.12.11 9331
XE Login