도서상세보기

도서명 Great Code Vol.2 2/e : 로우레벨로 생각하고 하이레벨로 코딩하기
저자 랜달 하이드
출판사 에이콘
출판일 2022-01-28
정가 45,000원
ISBN 9791161755953
수량
1장. 로우레벨로 생각하고 고급 언어로 코딩하기
__1.1 컴파일러 품질에 대한 오해
__1.2 어셈블리 언어를 배우는 것이 여전히 좋은 생각인 이유
__1.3 어셈블리 언어를 배우는 것이 절대적으로 필요하지 않은 이유
__1.4 로우레벨에 대한 고려
____1.4.1 받은 만큼만 돌려주는 컴파일러
____1.4.2 컴파일러가 더 좋은 기계어 코드를 생성하도록 돕는 방법
____1.4.3 어셈블리를 고려한 HLL 코딩 방법
__1.5 HLL 코딩
__1.6 언어 중립적 접근
__1.7 추가 팁
__1.8 참고 자료

2장. 어셈블리 언어를 꼭 배워야 할까?
__2.1 어셈블리 언어 학습의 이점과 장애물
__2.2 이 책이 도움이 되는 방법
__2.3 해결책: 하이레벨 어셈블러
__2.4 고급 어셈블리 언어
__2.5 하이레벨로 생각하고 로우레벨로 코딩하기
__2.6 어셈블리 프로그래밍 패러다임(로우레벨로 생각하기
__2.7 참고 자료

3장. HLL 프로그래머를 위한 80X86 어셈블리
__3.1 배울수록 도움이 되는 어셈블리 언어
__3.2 80x86 어셈블리 문법
____3.2.1 기본 80x86 아키텍처
____3.2.2 레지스터
____3.2.3 80x86 32비트 범용 레지스터
____3.2.4 80x86 EFLAGS 레지스터
__3.3 리터럴 상수
____3.3.1 이진 리터럴 상수
____3.3.2 십진 리터럴 상수
____3.3.3 16진 리터럴 상수
____3.3.4 문자와 문자열 리터럴 상수
____3.3.5 실수 리터럴 상수
__3.4 어셈블리 언어에서의 선언(기호 상수
____3.4.1 HLA의 선언 상수
____3.4.2 Gas의 선언 상수
____3.4.3 MASM의 선언 상수
__3.5 80x86 주소 지정 방식
____3.5.1 80x86 레지스터 주소 지정 방식
____3.5.2 즉시 주소 지정 방식
____3.5.3 직접 메모리 주소 지정 방식
____
◈ 이 책에서 다루는 내용 ◈

◆ 코드가 좋은 기계어 코드를 생성하는지 컴파일러의 출력물을 분석해 확인하는 방법
◆ 컴파일러가 생성하는 기계어 코드 명령문의 유형을 이해하고, 하이레벨 언어로 코딩할 때 최선의 명령문을 선택
◆ 컴파일러 출력을 읽기에 충분한 어셈블리 언어
◆ 컴파일러가 다양한 상수 및 변수 오브젝트를 기계어 데이터로 변환하는 방법

◈ 이 책의 대상 독자 ◈

독자들이 어느 정도의 사전 지식을 갖추고 있다는 가정을 바탕으로 한다. 다음과 같은 스킬을 갖고 있다면, 이 책에서 최대한 도움을 얻을 수 있다.

◆ 적어도 하나 이상의 명령형(절차적 프로그래밍 언어나 객체지향 프로그래밍 언어에 상당히 능숙하다. (예를 들면, C, C++, 파스칼(Pascal, 자바(Java, 스위프트(Swift, 베이직(BASIC, 파이썬(Python, 어셈블리(assembly, 에이다(Ada, 모듈라-2(Modula-2, 포트란(FORTRAN 등
◆ 간단한 문제에 대한 설명을 듣고 해당 문제에 대한 소프트웨어 솔루션을 설계하고 구현할 수 있어야 한다. 대학에서 한 학기 정도 관련 과목을 수강했거나 몇 개월 정도 독학했다면, 충분히 준비될 수 있다.
◆ 컴퓨터 구조나 데이터 표현에 대한 기본적인 이해가 있어야 한다. 16진수와 이진수 시스템을 알아야 한다. 부호 있는 정수, 문자, 문자열 등 다양한 하이레벨 데이터 유형이 컴퓨터 메모리에 어떻게 표현되는지 이해하고 있어야 한다.

◈ 이 책의 구성 ◈

효율적인 코드를 작성하기 위해 전문 어셈블리 언어 프로그래머가 될 필요는 없지만, 이 책의 컴파일러 출력을 이해하려면 최소한 이에 대한 기본 지식은 필요하다. 1장과 2장에서는 어셈블리 언어 학습의 여러 측면을 살펴보고, 일반적인 오해, 컴파일러에 대한 고려사항, 사용 가능한 리소스를 다룬다. 3장에서는 80x86 어셈블리 언어에 대한 빠른 입문가이드를 제공한다. 온라인 부록은 파워PC, ARM, 자바 바이트코드, CIL(Common I