모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    황금비님의
    개인페이지입니다
    가입 : 13-10-13
    방문 : 2713회
    닉네임변경 이력
    회원차단
    회원차단해제
    게시물ID : programmer_5407
    작성자 : 황금비
    추천 : 1
    조회수 : 926
    IP : 121.143.***.81
    댓글 : 2개
    등록시간 : 2014/09/13 15:35:06
    http://todayhumor.com/?programmer_5407 모바일
    디스어셈블리 인텔 opmap, moder/m, sib
    ms 빠돌이 입니다.
    터보C로 c배우고 visual studio 5.0으로 잠깐 독학하다가 입사해서 6.0 사용하면서 거의 2007년까지 쓰다가 2005 잠깐 쓰고 2008을 이식성 때문에 지금까지 메인으로 쓰고 있습니다. 2010은 잠깐 쓰다가 버리고 2012를 다시 구입해서 새로운 c++11문법 적용과 타입스크립트 개발 툴로 사용하고 있습니다.

    저는 vc에서 디버깅으로 disassembly를 아주 가끔씩 사용합니다. 이 디스어셈블리가 2010부터 disassembly에 추가 된 것이 많은데,
    코드 바이트, 주소, 소스코드, 기호 이름 줄 번호 표시 등을 체크해서 볼 수 있어서 편리합니다.

    disaa.jpg


    만약 디스어셈블리는 디버그 모드에서 동작하는데 활성화가 안되어 있다면 도구->디버그 -> 디스어셈블리를 선택하거나 ALT+8을 누르면 창이 활성화 됩니다.

    잠깐 이 디스어셈을 설명 드리면 그림에서 맨 좌측의 노란색이 현재 명령어 주소를 가르키는 커서이고 처음 00121070 등은 코드 세그먼트 주소를 말합니다. 프로그램이 시작되면 운영체제의 프로그램 로더는 코드가 저장된 메모리 블록 코드세그먼트와 스택 세그먼트가 RAM에 처음 생성이되고 데이터 세그먼트, extra 데이터 세그먼트가 만들어지는데 코드 세그먼트는 코드가 올라가 있는 메모리입니다.


    disaa2.jpg
    명령어 형식은 이렇게 되어 있는데 바이트가 기본 단위이며 디스어셈블리에서는 Opcode 부터 시작합니다.

    예를 들어서  00121070 줄의 "55", 012C1071의 "8B EC"가 명령어 세트 입니다.

    같은 어셈 명령어라도 레지스트리에 따라 번역된 기계어가 조금씩 달라지는데 "mov"라는 어셈 명령어도 012C1071는 8B, 012C1082는 B9
    012C1087 B8로 되어 번역되어 있음을 볼 수 있는데 그 이유는 op map을 보시면 알 수 있습니다.

    ASSEM00.jpg

    예를 들어 012C1071를 보면 기계어로는 "8B EC"로 되어 있고 우측 어셈에는 mov ebp,esp로 되어있는데 8B는 Op Map의 8행 B열을 보면
    MOV Gv,Ev로 되어 있음을 볼 수 있는데 Gv, Ev 는 "8B" 다음의 "EC"에서 가져 옵니다.


    ASSEM01.jpg

    ModeR/M  테이블에서 EC 의 왼쪽을 쭉 가면 ESP...로 쭉 되어 있고 상단으로 가면  r2에 ESP되어 있음을 볼 수 있으며 8B EC 는 mov ebp,esp가 됩니다.

    이런 식으로 명령어가 해석되는 것이고요, 눈으로 읽을 때 주의할 것은 음수에 대한 표현입니다.
    그림에서 012C10A3 에는 8B 45 E0로 되어 있는데 8B mov , 45는 상단 EAX, 좌측 [EBP]+ disp8 이렇게 되어 있습니다. 이것은 EAX에 EBP+ 8비트 변위 위치에 있는 갑을 복사하라는 것인데 여기서 E0는 변위가 입니다.

    8비트 변위는 -128~ 127입니다. 따라서 E0는 음수로 표현한다면 -20H 가 되겠지요. 그래서 디스어셈에 dword ptr [ebp-20h]로 표현 되어 있는 것입니다.

    만약 SIB를 요구한다면 SIB(scale index table) 테이블을 사용하시면 됩니다.
    ASSEM02.jpg

    머 이 정도면 대충 디스어셈블리에 나타난 코드 바이트를 이해할 수 있고 프로그래밍이 더 재미있어 질거라 생각됩니다.

    참고로 Op map에서 Gv, Ev, Iz 이런거 보이실 텐데 이것은 Addressing method와 Operand type 입니다.
    예를 들어 Ev는 Addressing Method가 E, 오퍼렌드 타입이 z이고요, 다음 그림을 이용하면 될 것 같습니다.

    ASSEM00.jpg


    이 게시물을 추천한 분들의 목록입니다.
    [1] 2014/09/13 16:06:43  113.216.***.244  navs  241922
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    72
    무슨 갤럭시 7 도 아니고 황금비 16/09/22 21:40 90 0
    71
    게임 업계 아재가 게임 프로그램 배우는 분들에게 해주는 도움 안되는 글 [7] 창작글 황금비 16/05/01 01:17 71 11
    70
    지하철 잡상인 - 유머글 아닙니다. [1] 창작글 황금비 16/04/02 10:23 35 0
    69
    러블리즈 가입했습니다. [2] 창작글 황금비 16/02/21 17:18 100 10
    68
    A Tour of C++ 발 번역 [2] 창작글 황금비 16/02/21 10:24 54 11
    67
    프로그래밍, 하는만큼 늡니다. [2] 창작글 황금비 15/06/15 23:06 46 2
    66
    개콘에서 푸리에 급수 황금비 15/03/08 22:19 75 0
    65
    주말이 끝나는 시점에서 심심해서 하나 더 sort [1] 황금비 14/11/02 17:53 41 1
    64
    스트레스 풀겸, 그냥 심심해서 [1] 황금비 14/11/02 15:15 63 0
    63
    심심해서 큐 만들어봄 황금비 14/10/07 18:26 43 2
    62
    아오 빡쳐. [2] 황금비 14/10/05 18:47 20 1
    61
    시리야 사태 [2] 황금비 14/10/04 23:07 82 2
    60
    아오.. 빡쳐... 아오 evo ssang.. [3] 황금비 14/09/24 05:56 167 1
    59
    terminal ide [6] 황금비 14/09/23 01:33 28 0
    58
    암당 [5] 황금비 14/09/22 14:27 99 0
    57
    100만원대 초반 예상 견적 [5] 황금비 14/09/22 09:09 147 1
    56
    나름 자부심 [4] 황금비 14/09/21 23:46 52 0
    55
    90만원대에 많이 추천되는 견적 예상 [5] 황금비 14/09/21 14:36 163 0
    54
    영어지만 대충 표만 봐도 어떻게 바뀌었는지 알수 있겠네요. [2] 황금비 14/09/20 00:01 57 1
    53
    컴퓨터 지름 [5] 황금비 14/09/16 15:36 77 0
    52
    포토샵 스크립트 황금비 14/09/15 20:59 32 1
    디스어셈블리 인텔 opmap, moder/m, sib [2] 황금비 14/09/13 15:35 35 1
    50
    27D850T 삼성 <- 이모니터 어떤가요? [1] 황금비 14/09/07 22:50 55 0
    49
    xor swap [14] 황금비 14/09/04 18:36 23 0
    48
    IHS 없는 뚜따 [10] 황금비 14/09/03 12:36 133 1
    47
    C++ PROGRAMMING LANGUAGE 4th advise만 발번역 [4] 황금비 14/09/01 19:50 33 5
    46
    포인터를 사용한 swap [16] 황금비 14/09/01 10:23 48 0
    45
    포인터 스포일 [21] 황금비 14/08/31 01:42 28 3/4
    44
    제가 사용하는 const, double poiner 입니다. [2] 황금비 14/08/30 02:22 38 1
    43
    모바일 게임 엔진 만드시는 분들 계신지요. [6] 황금비 14/08/26 17:59 29 0
    [1] [2] [3] [4]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈