모바일 오유 바로가기
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 : computer_130740
    작성자 : 황금비
    추천 : 1
    조회수 : 1711
    IP : 121.143.***.81
    댓글 : 4개
    등록시간 : 2013/11/27 15:53:54
    http://todayhumor.com/?computer_130740 모바일
    VC 디스어셈블리를 이용해서 함수 포인터를 쉽게 이해하기
    c 프로그래밍 공부 어렵죠.
    어려운 이유가 저 개인적으로는 기계가 처리하는 방식에 맞추어 사람의 사고를 재 구성 하는 과정 때문이라 생각됩니다.
    컴퓨터 프로그램은 단어 그대로 컴퓨터가 처리해야할 일을 순서대로 나열한 것입니다.

    c 프로그램을 빨리 배우는 방법중의 하나가 코딩을 하고 디버깅을 해보는 것입니다. vc는 디버깅 모드에서 어셈블리 코드를 볼 수 있는데 이것이 프로그램을 이해하는 데 많은 도움이 됩니다.

    c언어에서 포인터는 아주 중요하죠.  포인터 변수는 장치, 코드, 메모리 등의 주소를 지정할 수 있는데 함수 포인터는 함수의 실행 코드를 저장하고 있는 변수로 c언어를 배운 분들이라면 다들 알고 있을것입니다..

    포인터 중에서 함수 포인터도 정말 이렇게 되는지 이것을 디스어셈블리로 확인해 보죠.

    다음과 같이 함수를 작성하고 

    #include <stdio.h>

    void MyFunc() {
    int c=10;
    printf("%d\n", c);
    }

    void main() {
    void (*pf)() = MyFunc;
    pf();
    }

    메인함수에서 함수 포인터 pf를 디스 어셈블리로 확인해 봅시다.

    보통 디버거 모드로 실행하면 다음 그림의 main함수에서부터 실행될 것입니다.

    이러한 이유는 실행런처가 보조기억장치에서 주기억장치로 코드 세그먼트, 스택 세그먼트를 확보한후에 main 함수를 호출하기 때문입니다.


    func.jpg


    암튼 붉은 색 부분 00E3143E 에서 함수 포인터에 0E311D6h 주소를 지정하고 있는데 0E311D6h 주소를 따라가면 녹색 화살표에  jmp 00E313b0로 값이 저장되어 있는 것을 볼 수 있고 00E313b0은 MyFunc 코드의 시작주소입니다.

    이렇게 디버드 모드와 디스어셈블리를 활용하면 활자로 배우는 C언어의 내용이 기계(머신)에서 어떻게 동작하는지 눈으로 확인 할 수 있어서 언어를 이해하는데 많은 도움이 됩니다.






    이 게시물을 추천한 분들의 목록입니다.
    [1] 2013/11/27 16:41:30  175.116.***.200  만렙마법사  160178
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

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

    번호 제 목 이름 날짜 조회 추천
    12
    50만원대 견적 [1] 황금비 13/12/21 23:27 30 0
    11
    본체만 22만원 맞춰봤습니다. [10] 황금비 13/12/21 23:04 102 1
    10
    스펙, 가성비 사이트 공유해요 [5] 황금비 13/12/21 18:46 38 0
    9
    32만원 웹서핑,동영상,서류용 견적 [7] 황금비 13/12/21 17:15 60 0
    8
    GTX780 Ti 견적 [5] 황금비 13/12/21 15:29 105 0
    7
    게임개발용 견적 [2] 황금비 13/12/21 15:00 79 0
    6
    60만원대 견적 저장 [1] 황금비 13/12/21 14:43 48 0
    5
    견적놀이 [6] 황금비 13/12/15 02:10 50 1
    4
    회사 개발 컴퓨터 견적(저장용) [1] 황금비 13/12/14 15:16 74 1
    3
    컴퓨터 견적의 기준 [3] 황금비 13/11/28 14:51 65 0
    VC 디스어셈블리를 이용해서 함수 포인터를 쉽게 이해하기 [4] 황금비 13/11/27 15:53 43 0
    1
    외적을 이용한 AB CD 두 직선 교차 황금비 13/10/24 19:10 23 0
    [1] [2] [3] [4]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈