분석을 하다보면 어떤것은 '#'을 쓰고 어떤 곳은 '()'를 사용하고 또 '[]' 이런 것도 사용하여 lilo 소스를 보면서 이해 해봤습니다. 

관련 문서를 찾지 못해 순전히 그럴것 같다는 가정입니다. 


       seg 0x7000
       mov ax, #0x07C0  ! ax 레지스터에는 0x07C0이라는 상수 값이 들어간다.
       mov ax, 0x07C0 ! ax 레지서터에는 0x7000:0x07C0이 가르키는 곳으로 부터 2byte값을 읽어 저장한다.
       mov ds, ax ! ds 레지스터에 ax레지스터 안에 있는 값을 저장한다.
ext_ex: .word 0
       mov ext_es, es ! es 레지스터의 값을 0x7000:ext_es가 가르키는 곳에 2byte 저장한다.
       mov es, ext_ex ! 0x7000:ext_ex가 가르키는 곳으로 부터 2바이트를 읽어 es레지스터에 저장한다.
       mov es, #ext_ex  ! ext_ex의 오프셋 값을 es에 저장한다.

       mov al, byte ptr (si+4) ! 0x7000:si+4가 가르키는 곳의 1byte 값을 al 레지스터에 넣어라
       mov byte ptr (si+4), #18 ! 0x7000:si+4가 가르키는 곳에 18을 저장하여라

break: .byte 0
       mov byte ptr break, #0 ! 0을 0x7000:break에 저장하여라   (괄호가 사용되지 않아도 포인팅 연산이 된다.!)

       mov ax,[0x1c*4] ! ax레지스터에 0x7000:0x1c*4주소에 있는 2byte 의 값을 저장한다.
       mov [0x1c*4], #break ! break의 오프셋 값을 0x7000:0x1c*4가 가르키는 곳에 2byte 저장한다.


'#'은 다음에 오는 인자를 상수(?)로 바꾼다고 생각하면 될거 같습니다.

'()'는 그냥 괄호의 본래 역확에 충실하여 계산 우선순위를 정하는 거라고 생각됩니다.

'()'는 C언어에서 '*p'역활을 하는거 같습니다.

- mov bx, #break

- mov al, (bx) 를 하게 되면 변수 break의 값이 al에 저장되는 것입니다.

만약 

- mov al, bx 를 하게 되면 bx의 값이 al에 저장되겠죠. 즉, break의 주소값이 al에 저장되는 것인데 al 과 bx의 사이즈가 틀려 컴파일 에러가 나겠네요.

- '()'는 AT&A 문법

'[]'는 현재 지정된 세그먼트를 무시하고 0x0000 부터 사용하는 거라고 생각됩니다.

'[]'는 intel 문법으로 AT&T의 '()'와 동일한다.

'byte ptr' or 'work ptr'은 C언어에서 강제 형변환 정도로 예상됩니다. 

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2197
1485 First.S, Second.S 분석한 자료 file 도영주 2013.08.03 1441
1484 kernel 에서 실행 순서 관련 문서 file 도영주 2013.08.03 1880
1483 오늘 스터디 시간에 잠깐 찾은 second.S 분석 pdf [1] file 제한재 2013.07.27 1841
1482 lilo 분석 참고 자료 시갈 2013.07.27 1463
» 헷갈리는 주소, 포인터 연산에 대하여 정리( #, (), [] ) [2] 시대유감 2013.07.20 3164
1480 Register 관련 몇 가지 정리. file 도영주 2013.07.16 3244
1479 처음 어셈블리 해보시는데 할만하세요? [4] 백창우 2013.07.08 1891
1478 SVN 사용법 정리 [2] 시대유감 2013.06.30 2135
1477 회식사진 투척합니다. [5] file 김택훈 2013.06.30 2291
1476 7장 소스1 file 시갈 2013.06.22 1415
1475 분석 관련 자료 [3] file 백창우 2013.06.15 1849
1474 리눅스 커널 분석 환경 [3] 시대유감 2013.06.10 2023
1473 오늘 풀리지 않은 문제 관련 [1] 이경욱 2013.06.02 3305
1472 OS 커널의 구조와 원리 실습 방법 [1] file 시갈 2013.05.26 5696
1471 제안사항 입니다. [2] 강정근 2013.05.07 3193
1470 ELF 파일 포맷 정리 [6] 도영주 2013.05.04 11542
1469 TOZ 신청방법 아시는분?! [4] 강정근 2013.04.29 2724
1468 안녕하세요. 빠른진행을 위해 어플로 접근성을 높여보아요^^ [1] Napoleon 2013.04.22 3583
1467 교제 및 장소(투표 종료) [14] 조유준 2013.04.22 3838
1466 반갑습니다. 이성미입니다. [1] 이성미 2013.04.22 3396
XE Login