GREAT CODE 제1권 하드웨어의 이해
- 원서명Write Great Code: Volume 1: Understanding the Machine (ISBN 9781593270032)
- 지은이랜달 하이드
- 옮긴이김원호, 최재식, 강승훈, 전동환
- ISBN : 8989975719
- 25,000원
- 2005년 07월 20일 펴냄
- 페이퍼백 | 464쪽 | 190*250mm
- 시리즈 : 프로그래밍 언어
판매처
재출간판책 소개
최고의 코딩, 최고의 프로그래머가 되기 위한 원리학습 가이드!!
프로그래머로 일하는 당신, 몸값을 높이고 싶은가? 수준을 올리고 싶은가?
단순히 몇 개의 코딩 기법을 익힌다고 해서 실력이 높아지지는 않는다.
연작 GREAT CODE는 최고의 코딩, 최고의 프로그래머가 되기 위해 닦아야 할 개념 원리를 학습해서 프로그래머의 내공을 높여주는 원리학습 가이드다. 더 빠르고 훌륭한 최고의 코드를 짤 수 있도록 전 4권에 걸쳐 프로그래밍의 근본원리를 쉽게 가르쳐준다.
★ GREAT CODE 시리즈 소개 ★
제1권 ‘하드웨어의 이해’는 컴퓨터 과학이나 컴퓨터 공학 수업에서 자세히 다루지 않고 넘어가는 경우가 많은 컴퓨터의 로우레벨에 대한 내용을 다룬다. 제1권의 내용은 최고의 코드로 구성된 프로그램의 기초가 된다.
제2권 ‘로우레벨로 생각하고, 하이레벨로 코딩하자’에서는 제1권에서 습득한 내용을 응용해본다. 제2권에서는 고급언어를 분석해서 컴파일러가 만들어낼 코드의 품질을 예측하는 방법을 알아볼 것이다. 이 방법을 알게 되면, 손으로 작성한 어셈블리 언어만큼이나 효율적으로 고급 프로그램 언어를 사용할 수 있게 될 것이다.
제3권 ‘소프트웨어 엔지니어링’에서는 수많은 소프트웨어 엔지니어링 책에서 이야기하는 복잡한 과정을 통하지 않고서도 읽기 쉬우며 유지보수하기 쉬운 코드를 작성하는 방법과 생산성을 향상시키는 방법을 알아본다. 품질이 나쁜 코드를 봐야 하는 프로그래머는 화가 나서 코드 작성자를 비방하지만, 품질이 좋은 코드로 작업하는 프로그래머는 일하며 행복해 한다.
제4권 ‘테스트, 디버그, 품질 보증’에서는 대부분 엔지니어들이 따분해하는 테스트를 효과적으로 하는 방법에 관해 다룰 것이다.
GREAT CODE: 제1권 하드웨어의 이해
“전자회로”, “논리설계”, “컴퓨터 아키텍처”, “시스템 프로그래밍”…
대학교에서 이미 배운 과목이고 실무에서도 꼭 필요한 것은 알겠는데, 도무지 정리도 잘 안되고 가물가물 생각이 떠오르지 않는다. 최고의 프로그래머가 되기 위해 반드시 알고 넘어가야 할 하드웨어와 컴퓨터 아키텍처에 대한 모든 내용을 이 한 권에 녹여냈다. 기존 서적의 난해함에 질린 독자들이라면 반드시 이 책을 읽기 바란다.
★ 이 책의 내용 ★
GREAT CODE 제1권 "하드웨어 이해하기" 한 권이면 어셈블리 프로그래밍 언어를 익혀야하는 부담 없이도 컴퓨터 구조에 관한 내용을 공부할 수 있다. 이 책은 C++, VB, 파스칼, 자바 등 여러 고급언어 프로그래머를 위해 저술됐으며, 컴퓨터 교육과정에서 흔히 다루지 않는 컴퓨터 구조의 기계적인 수준까지 자세하게 다루고 있다.
• 숫자나 문자열, 고급 자료구조 등을 표기하는 방법을 익혀서, 컴퓨터가 각 데이터 타입을 사용하는 데 드는 비용을 파악한다.
• 컴퓨터가 데이터를 구성하는 방법을 익힘으로써, 데이터를 좀더 효율적으로 처리하는 방법을 알아낸다.
• CPU가 동작하는 방식을 익힘으로써 컴퓨터가 처리하는 방식대로 동작하는 프로그램 코드를 작성할 수 있다.
• 입출력 장치가 동작하는 방식을 이해함으로써, 그러한 장치에 접근하는 애플리케이션의 성능을 최대화할 수 있다.
• 메모리 계층 구조를 최적화해 사용하는 방법을 통해 최대한 빠른 프로그램을 작성할 수 있다.
최고의 코드는 곧 효율적인 코드다. 진정 효율적인 코드를 작성하기 위해서는 먼저, 컴퓨터 시스템이 어떻게 프로그램을 실행하고, 프로그래밍 언어 상의 추상화(abstraction)가 기계적인 수준의 컴퓨터 하드웨어와 어떻게 대응되는지를 이해해야 한다. 컴파일러는 최적화된 기계어 코드를 만들어 주지는 못하므로, 이는 결국 프로그래머의 일이다. ‘GREAT CODE’ 시리즈의 1권인 이 책은 모든 최고의 소프트웨어 밑바탕에 있는 내용들을 알려 줄 것이다.
★ 이 책의 대상 ★
이 책은 특별한 프로그램언어를 위한 책은 아니다. 이 책에서 설명하는 개념은 프로그래밍언어에 관계 없이 적용될 수 있는 것들이다. 이 책을 효과적으로 이용하기 위해서 적어도 한가지 이상의 절차적 프로그램언어를 다룰 줄 알아야만 한다. C, C++, 파스칼, 베이직, 어셈블리 언어처럼 많이 사용되는 언어뿐 아니라 에이다(Ada), 모듈러2(Modula-2), 포트란 등과 같은 언어여도 괜찮다. 또 작은 문제에 대한 명세를 받아서, 그 문제에 대한 소프트웨어를 설계하거나 구현할 능력이 있어야 한다. 보통 대학의 한 학기 정도의 수업만 수강하거나, 스스로가 몇 달만 노력해도 이 책을 공부하는 데 큰 불편함은 없을 것이다.
참고로 이 책은 다양한 예시에서 다음 언어와 컴파일러를 사용했다.
- C/C++: GCC, 마이크로소프트 비주얼 C++, 볼랜드 C++
- Pascal: 볼랜드 델파이(Delphi) / 카이릭스(Kylix)
- 어셈블리: 마이크로소프트 MASM, HLA (the High Level Assembler), Gas(파워PC용)
- BASIC: 마이크로소프트 비주얼베이직
프로그래머로 일하는 당신, 몸값을 높이고 싶은가? 수준을 올리고 싶은가?
단순히 몇 개의 코딩 기법을 익힌다고 해서 실력이 높아지지는 않는다.
연작 GREAT CODE는 최고의 코딩, 최고의 프로그래머가 되기 위해 닦아야 할 개념 원리를 학습해서 프로그래머의 내공을 높여주는 원리학습 가이드다. 더 빠르고 훌륭한 최고의 코드를 짤 수 있도록 전 4권에 걸쳐 프로그래밍의 근본원리를 쉽게 가르쳐준다.
★ GREAT CODE 시리즈 소개 ★
제1권 ‘하드웨어의 이해’는 컴퓨터 과학이나 컴퓨터 공학 수업에서 자세히 다루지 않고 넘어가는 경우가 많은 컴퓨터의 로우레벨에 대한 내용을 다룬다. 제1권의 내용은 최고의 코드로 구성된 프로그램의 기초가 된다.
제2권 ‘로우레벨로 생각하고, 하이레벨로 코딩하자’에서는 제1권에서 습득한 내용을 응용해본다. 제2권에서는 고급언어를 분석해서 컴파일러가 만들어낼 코드의 품질을 예측하는 방법을 알아볼 것이다. 이 방법을 알게 되면, 손으로 작성한 어셈블리 언어만큼이나 효율적으로 고급 프로그램 언어를 사용할 수 있게 될 것이다.
제3권 ‘소프트웨어 엔지니어링’에서는 수많은 소프트웨어 엔지니어링 책에서 이야기하는 복잡한 과정을 통하지 않고서도 읽기 쉬우며 유지보수하기 쉬운 코드를 작성하는 방법과 생산성을 향상시키는 방법을 알아본다. 품질이 나쁜 코드를 봐야 하는 프로그래머는 화가 나서 코드 작성자를 비방하지만, 품질이 좋은 코드로 작업하는 프로그래머는 일하며 행복해 한다.
제4권 ‘테스트, 디버그, 품질 보증’에서는 대부분 엔지니어들이 따분해하는 테스트를 효과적으로 하는 방법에 관해 다룰 것이다.
GREAT CODE: 제1권 하드웨어의 이해
“전자회로”, “논리설계”, “컴퓨터 아키텍처”, “시스템 프로그래밍”…
대학교에서 이미 배운 과목이고 실무에서도 꼭 필요한 것은 알겠는데, 도무지 정리도 잘 안되고 가물가물 생각이 떠오르지 않는다. 최고의 프로그래머가 되기 위해 반드시 알고 넘어가야 할 하드웨어와 컴퓨터 아키텍처에 대한 모든 내용을 이 한 권에 녹여냈다. 기존 서적의 난해함에 질린 독자들이라면 반드시 이 책을 읽기 바란다.
★ 이 책의 내용 ★
GREAT CODE 제1권 "하드웨어 이해하기" 한 권이면 어셈블리 프로그래밍 언어를 익혀야하는 부담 없이도 컴퓨터 구조에 관한 내용을 공부할 수 있다. 이 책은 C++, VB, 파스칼, 자바 등 여러 고급언어 프로그래머를 위해 저술됐으며, 컴퓨터 교육과정에서 흔히 다루지 않는 컴퓨터 구조의 기계적인 수준까지 자세하게 다루고 있다.
• 숫자나 문자열, 고급 자료구조 등을 표기하는 방법을 익혀서, 컴퓨터가 각 데이터 타입을 사용하는 데 드는 비용을 파악한다.
• 컴퓨터가 데이터를 구성하는 방법을 익힘으로써, 데이터를 좀더 효율적으로 처리하는 방법을 알아낸다.
• CPU가 동작하는 방식을 익힘으로써 컴퓨터가 처리하는 방식대로 동작하는 프로그램 코드를 작성할 수 있다.
• 입출력 장치가 동작하는 방식을 이해함으로써, 그러한 장치에 접근하는 애플리케이션의 성능을 최대화할 수 있다.
• 메모리 계층 구조를 최적화해 사용하는 방법을 통해 최대한 빠른 프로그램을 작성할 수 있다.
최고의 코드는 곧 효율적인 코드다. 진정 효율적인 코드를 작성하기 위해서는 먼저, 컴퓨터 시스템이 어떻게 프로그램을 실행하고, 프로그래밍 언어 상의 추상화(abstraction)가 기계적인 수준의 컴퓨터 하드웨어와 어떻게 대응되는지를 이해해야 한다. 컴파일러는 최적화된 기계어 코드를 만들어 주지는 못하므로, 이는 결국 프로그래머의 일이다. ‘GREAT CODE’ 시리즈의 1권인 이 책은 모든 최고의 소프트웨어 밑바탕에 있는 내용들을 알려 줄 것이다.
★ 이 책의 대상 ★
이 책은 특별한 프로그램언어를 위한 책은 아니다. 이 책에서 설명하는 개념은 프로그래밍언어에 관계 없이 적용될 수 있는 것들이다. 이 책을 효과적으로 이용하기 위해서 적어도 한가지 이상의 절차적 프로그램언어를 다룰 줄 알아야만 한다. C, C++, 파스칼, 베이직, 어셈블리 언어처럼 많이 사용되는 언어뿐 아니라 에이다(Ada), 모듈러2(Modula-2), 포트란 등과 같은 언어여도 괜찮다. 또 작은 문제에 대한 명세를 받아서, 그 문제에 대한 소프트웨어를 설계하거나 구현할 능력이 있어야 한다. 보통 대학의 한 학기 정도의 수업만 수강하거나, 스스로가 몇 달만 노력해도 이 책을 공부하는 데 큰 불편함은 없을 것이다.
참고로 이 책은 다양한 예시에서 다음 언어와 컴파일러를 사용했다.
- C/C++: GCC, 마이크로소프트 비주얼 C++, 볼랜드 C++
- Pascal: 볼랜드 델파이(Delphi) / 카이릭스(Kylix)
- 어셈블리: 마이크로소프트 MASM, HLA (the High Level Assembler), Gas(파워PC용)
- BASIC: 마이크로소프트 비주얼베이직
목차
목차
- 1장 최고의 코드를 작성하기 위해 알아야 할 것
- 1.1 ‘최고의 코드’ 시리즈
- 1.2 이 책의 내용
- 1.3 이 책의 대상
- 1.4 최고의 코드의 특징
- 1.5 동작 환경
- 1.6 더 많은 정보를 원하면
- 2장 수치 표기법
- 2.1 수란 무엇인가?
- 2.2 수 체계
- 2.2.1 10진 위치 표기법
- 2.2.2 기수
- 2.2.3 2진법 수체계
- 2.2.4 16진법 수체계
- 2.2.5 8진법 수체계
- 2.3 수치/문자열 변환
- 2.4 내부 수치 표현법
- 2.4.1 비트
- 2.4.2 비트 스트링
- 2.5 부호 있는 수와 부호 없는 수
- 2.6 2진수의 유용한 속성
- 2.7 부호 확장, 0 확장과 축소
- 2.8 포화
- 2.9 2진화 10진 표기법
- 2.10 고정소수점 표기
- 2.11 스케일 수치 포맷
- 2.12 유리수 표기법
- 2.13 더 많은 정보를 원하면
- 3장 2진법 연산과 비트 연산
- 3.1 2진수, 16진수의 연산
- 3.1.1 2진수 덧셈
- 3.1.2 2진수 뺄셈
- 3.1.3 2진수 곱셈
- 3.1.4 2진수 나눗셈
- 3.2 비트 논리 연산
- 3.3 2진수와 비트 스트링에 대한 논리 연산
- 3.4 유용한 비트 연산
- 3.4.1 AND를 이용, 비트 스트링의 비트 테스트
- 3.4.2 AND를 이용, 여러 비트가 모두 0인지 테스트
- 3.4.3 비트 스트링 내부의 여러 비트 비교
- 3.4.4 AND를 이용, 모듈로-n 카운터 만들기
- 3.5 쉬프트와 로테이트
- 3.6 비트 필드와 묶인 데이터
- 3.1 2진수, 16진수의 연산
- 4장 부동소수점 표기
- 4.1 부동소수점 연산 소개
- 4.2 IEEE 부동소수점 포맷
- 4.2.1 단정밀도 부동소수점 포맷
- 4.2.2 복정밀도 부동소수 포맷
- 4.2.3 확정 정밀도 부동소수 포맷
- 4.3 정규화
- 4.4 라운딩
- 4.5 특별 부동소수점 값
- 4.6 부동소수점 예외
- 4.7 부동소수점 연산
- 4.7.1 부동소수점 표기
- 4.7.2 부동소수점 덧셈과 뺄셈
- 4.7.3 부동소수점 곱셈과 나눗셈
- 4.8 더 많은 정보를 원하면
- 5장 문자 표기법
- 5.1 문자 데이터
- 5.1.1 ASCII 문자셋
- 5.1.2 EBCDIC 문자셋
- 5.1.3 더블 바이트 문자셋
- 5.1.4 유니코드 문자셋
- 5.2 문자열
- 5.2.1 문자열 포맷
- 5.2.2 문자열의 유형: 정적 문자열, 유사 동적 문자열, 동적 문자열
- 5.2.3 문자열의 참조 횟수
- 5.2.4 델파이/카일릭스 문자열
- 5.2.5 자신만의 문자열 포맷 만들기
- 5.3 문자셋
- 5.3.1 문자셋의 멱집합 표기
- 5.3.2 문자셋의 문자 나열식 표기
- 5.4 자신만의 문자셋을 설계하기
- 5.1 문자 데이터
- 6장 메모리 구조와 접근
- 6.1 기본 시스템 구성요소
- 6.1.1 시스템 버스
- 6.1.2 주소 버스
- 6.1.3 제어 버스
- 6.2 메모리의 물리적 구조
- 6.2.1 8비트 데이터 버스
- 6.2.2 16비트 데이터 버스
- 6.2.3 32비트 데이터 버스
- 6.2.4 64비트 버스
- 6.2.5 80x86 프로세서가 아닌 프로세서에서의 작은 단위 메모리 접근
- 6.3 빅 엔디안 구조 VS 리틀 엔디안 구조
- 6.4 시스템 클럭
- 6.4.1 메모리 접근과 시스템 클럭
- 6.4.2 대기 상태
- 6.4.3 캐쉬 메모리
- 6.5 CPU 메모리 접근
- 6.5.1 직접 지정 모드
- 6.5.2 간접 지정 모드
- 6.5.3 인덱스 지정 모드
- 6.5.4 스케일 인덱스 지정 모드
- 6.6 더 많은 정보를 원하면
- 6.1 기본 시스템 구성요소
- 7장 혼합 데이터 형과 메모리 객체
- 7.1 포인터
- 7.1.1 포인터 구현
- 7.1.2 포인터와 동적 메모리 할당
- 7.1.3 포인터 연산
- 7.2 배열
- 7.2.1 배열의 선언
- 7.2.2 메모리 상에서 배열의 모습
- 7.2.3 배열 원소에 접근하기
- 7.2.4 다차원 배열
- 7.3 레코드/구조체
- 7.3.1 파스칼/델파이 레코드
- 7.3.2 C/C++ 레코드
- 7.3.3 HLA 레코드
- 7.3.4 레코드를 위한 메모리 공간
- 7.4 식별 유니온
- 7.4.1 C/C++ 유니온
- 7.4.2 파스칼/델파이/카일릭스 유니온
- 7.4.3 HLA 유니온
- 7.4.4 유니온을 위한 메모리 공간
- 7.4.5 유니온의 다른 용법
- 7.5 더 많은 정보를 원하면
- 7.1 포인터
- 8장 불리언 로직과 디지털 설계
- 8.1 불리언 대수
- 8.1.1 불리언 연산자
- 8.1.2 불리언 공리
- 8.1.3 불리언 연산자 우선순위
- 8.2 불리언 함수와 진리표
- 8.3 함수 번호
- 8.4 불리언 수식의 대수 처리
- 8.5 정규형
- 8.5.1 최소항의 합과 진리표
- 8.5.2 대수적으로 최소항의 합 만들기
- 8.5.3 최대항의 곱 정규형
- 8.6 불리언 함수의 단순화
- 8.7 결국, 이는 컴퓨터에 어떻게 적용되는가?
- 8.7.1 전자 회로와 불리언 함수의 관계
- 8.7.2 조합 회로
- 8.7.3 순차 로직과 클럭 로직
- 8.8 더 많은 정보를 원하면
- 8.1 불리언 대수
- 9장 CPU 구조
- 9.1 기본적인 CPU 설계
- 9.2 명령어의 해석과 수행: 랜덤 로직 vs. 마이크로코드
- 9.3 단계별로 명령어 수행하기
- 9.3.1 mov 명령어
- 9.3.2 add 명령어
- 9.3.3 jnz 명령어
- 9.3.4 loop 명령어
- 9.4 병렬성-더 높은 성능의 비결
- 9.4.1 프리페치 큐
- 9.4.2 프리페치 큐의 성능 향상을 방해하는 요소들
- 9.4.3 파이프라이닝-여러 명령어 수행을 중첩하기
- 9.4.4 명령어 캐쉬-다수의 메모리 경로 제공하기
- 9.4.5 피이프라인 헤저드
- 9.4.6 슈퍼스칼라 오퍼레이션-명령어를 병렬적으로 수행하기
- 9.4.7 비순차적 수행
- 9.4.8 레지스터 이름 바꾸기
- 9.4.9 VLIW 아키텍처
- 9.4.10 병렬 처리
- 9.4.11 멀티프로세싱
- 9.5 더 많은 정보를 원하면
- 10장 명령어 집합 구조
- 10.1 명령어 집합 설계의 중요성
- 10.2 명령어 설계의 기본적인 목적
- 10.2.1 op코드 길이 선택하기
- 10.2.2 미래에 대한 대비
- 10.2.3 명령어 선택하기
- 10.2.4 명렁어에 op코드 할당하기
- 10.3 가상 프로세서 Y86
- 10.3.1 Y86 프로세서의 제한 사항
- 10.3.2 Y86 명령어
- 10.3.3 Y86의 지정 모드
- 10.3.4 Y86 명령어 인코딩하기
- 10.3.5 Y86 명령어 인코딩의 예
- 10.3.6 Y86 명령어 집합 확장하기
- 10.4 80x86 명령어 인코딩하기
- 10.4.1 명령어 오퍼런드 인코딩하기
- 10.4.2 add 명령어 인코딩하기 - 몇 가지 예제들
- 10.4.3 상수 오퍼런드 인코딩하기
- 10.4.4 8비트, 16비트, 32비트 오퍼런드 인코딩하기
- 10.4.5 명령어의 대안 인코딩
- 10.5 명령어 집합 설계가 프로그래머에게 의미하는 것들
- 10.6 더 많은 정보를 원한다면
- 11장 메모리 구조와 구성
- 11.1 메모리 계층
- 11.2 메모리 계층의 동작 방식
- 11.3 메모리 하위시스템에 존재하는 성능 차이
- 11.4 캐쉬의 구조
- 11.4.1 직접-사상 캐쉬
- 11.4.2 완전 연관 캐쉬
- 11.4.3 n-Way 집합 연관 캐쉬
- 11.4.4 데이터 접근 유형에 따라 캐쉬 방식 결정하기
- 11.4.5 캐쉬 라인 교체 정책
- 11.4.6 메모리에 데이터 쓰기
- 11.4.7 캐쉬 사용과 소프트웨어
- 11.5 가상 메모리, 보호 장치, 페이징
- 11.6 스래슁
- 11.7 NUMA와 주변 장치들
- 11.8 메모리 계층을 고려해서 소프트웨어 작성하기
- 11.9 실행 중 메모리의 구성 방식
- 11.9.1 정적/동적인 오브젝트, 결합, 수명기간
- 11.9.2 코드, 읽기전용, 상수 영역
- 11.9.3 정적인 변수 영역
- 11.9.4 초기화되지 않은 영역
- 11.9.5 스택 영역
- 11.9.6 힙 영역과 동적인 메모리 할당
- 11.10 더 많은 정보를 원하면
- 12장 입력과 출력
- 12.1 CPU를 외부와 연결하기
- 12.2 포트를 시스템에 연결하는 다른 방법들
- 12.3 입출력 메커니즘
- 12.3.1 메모리-맵 입출력
- 12.3.2 입출력과 캐쉬
- 12.3.3 I/O-맵 입출력
- 12.3.4 직접 메모리 접근
- 12.4 입출력 속도 계층
- 12.5 시스템 버스와 각 데이터 전송률
- 12.5.1 PCI 버스의 성능
- 12.5.2 ISA 버스의 성능
- 12.5.3 AGP 버스
- 12.6 버퍼링
- 12.7 핸드쉐이킹
- 12.8 입출력 포트의 타임아웃
- 12.9 인터럽트와 폴링
- 12.10 보호 모드 연산과 장치 드라이버
- 12.10.1 장치 드라이버
- 12.10.2 장치 드라이버 및 "파일들"과 통신하기
- 12.11 각 PC 주변 장치에 대해
- 12.12 키보드
- 12.13 표준 PC 병렬 포트
- 12.14 직렬 포트
- 12.15 디스크 드라이브
- 12.15.1 플로피 드라이브
- 12.15.2 하드 드라이브
- 12.15.3 RAID 시스템
- 12.15.4 Zip 드라이브 등의 광 드라이브
- 12.15.5 광학 드라이브
- 12.15.6 CD-ROM, CD-R, CD-R/W, DVD, DVD-R, DVD-RAM과 DVD-R/W 드라이브
- 12.16 테이프 드라이브
- 12.17 플래시 저장장치
- 12.18 램 디스크와 반도체 디스크
- 12.19 SCSI 장치와 제어기
- 12.20 IDE/ATA 인터페이스
- 12.21 대용량 저장 장치의 파일 시스템
- 12.21.1 자유공간 비트맵을 사용한 파일 관리
- 12.21.2 파일 할당 테이블
- 12.21.3 블록 리스트 파일 구조
- 12.22 대용량 장치의 데이터를 조작하는 소프트웨어를 작성하기
- 12.22.1 파일 접근 속도
- 12.22.2 동기 I/O와 비동기 I/O
- 12.22.3 I/O 형식의 의미
- 12.22.4 메모리 맵 파일
- 12.23 범용 직렬 버스
- 12.23.1 USB 설계
- 12.23.2 USB 성능
- 12.23.3 USB 전송의 형식
- 12.23.4 USB 장치 드라이버
- 12.24 마우스, 트랙패드 및 다른 포인팅 장치
- 12.25 조이스틱과 게임 제어기
- 12.26 사운드 카드
- 12.26.1 오디오 주변장치가 소리를 만드는 방법
- 12.26.2 오디오와 MIDI 파일 형식
- 12.26.3 오디오 장치를 프로그래밍 하기
도서 오류 신고
정오표
1쇄 오류/오탈자
1) p28 표 2-6 ‘32비트’열의 마지막 행, $FFFF_8086 =>$0000_8086
2) p54 코드 8행의 주석, 논리 우측 쉬프트 => 산술 우측 쉬프트
3) p56 두 번째 코드 16행,
mov( ax, packdeDate ); // 에러인 경우
=> mov( ax, packedDate );
// 에러인 경우
4) p72 5행, (223)의 값만을 => (223)의 값만을
5) p104 주1의 두 번째 문장, 패키지를~봐야 한다. => 삭제
6) p136 9행, 그러나 264바이트가 => 그러나 264바이트가
7) p139 1행, 그림 6-4을 보면 주소 193에서 시작하는 워드가 있고, 주소 194에서
=> 그림 6-4를 보면 주소 188에서 시작하는 워드가 있고, 주소 186에서
8) p139 6행, (구현 8088 CPU와 같은) => (구형 8088 CPU와 같은)
9) p163 네 번째 문단 1행, 이 중 간접참조로 => 이중 간접 참조로
10) p167 두 번째 코드 13행,
while( *aPtr이 가리키고 있는 다음 문자로 이동한다. ) => while( *ePtr !=’\0’ && *eptr !=’e’ )
11) p193 2행, 연산의 항원 0이다 => 연산의 항원은 0이다
12) p203 표 8-8 아래 두 번째 행, G=AB’ => G=A’B’
13) p223 6행, 공용 클럭 라인 => 공용 클럭 라인(CIK)
14) p227 그림 9-3, DD –or- SS => DD 또는 SS
15) p242 7행, op코드를 읽어온다 => op코드를 읽어서 해석한다
16) p301 9행, L1 캐쉬 이하 레벨 => L1 캐쉬 아래 레벨
17) p330 그림 12-1 아래 첫 번째 행, DB-24F => DB-25F
18) p360 아래에서 열 번째 행, 디스크 마스터(CD-ROM을 만드는 기계) => 마스터 CD
19) p363 두 번째 문단 1행,
플래쉬는 읽기 전용 메모리(EEPROM) 기술을 사용했음에도 읽기와 쓰기가 모두 가능한 반도체 장치이다.
=> 플래쉬는 EEPROM 기술을 한 단계 발전시켜 읽기와 쓰기가 모두 가능하게 만든 반도체 장치이다.
20) p365 아래에서 세 번째 행, 한 바이트보다 작다는 => 한 바이트 작다는
21) p391 3행, 주변장치만으로는 => 주변 장치 조합만으로는
22) p391 세 번째 문단 5행, 파이어월 => 파이어와이어
23) p393 [12.23.3 USB 전송 형식] 2행, 동시(isochronous) => 등시(isochronous)
2쇄, 3쇄 오류/오탈자
1) p72 그림 4-2 아래 3행
초과-127 포맷에서는 20을 나타낼 때, => 초과-127 포맷에서는 20을 나타낼 때,
2) p72 그림 4-2 아래 5행
가수는 1.0이고 지수는 20, => 가수는 1.0이고 지수는 20,
1) p28 표 2-6 ‘32비트’열의 마지막 행, $FFFF_8086 =>$0000_8086
2) p54 코드 8행의 주석, 논리 우측 쉬프트 => 산술 우측 쉬프트
3) p56 두 번째 코드 16행,
mov( ax, packdeDate ); // 에러인 경우
=> mov( ax, packedDate );
// 에러인 경우
4) p72 5행, (223)의 값만을 => (223)의 값만을
5) p104 주1의 두 번째 문장, 패키지를~봐야 한다. => 삭제
6) p136 9행, 그러나 264바이트가 => 그러나 264바이트가
7) p139 1행, 그림 6-4을 보면 주소 193에서 시작하는 워드가 있고, 주소 194에서
=> 그림 6-4를 보면 주소 188에서 시작하는 워드가 있고, 주소 186에서
8) p139 6행, (구현 8088 CPU와 같은) => (구형 8088 CPU와 같은)
9) p163 네 번째 문단 1행, 이 중 간접참조로 => 이중 간접 참조로
10) p167 두 번째 코드 13행,
while( *aPtr이 가리키고 있는 다음 문자로 이동한다. ) => while( *ePtr !=’\0’ && *eptr !=’e’ )
11) p193 2행, 연산의 항원 0이다 => 연산의 항원은 0이다
12) p203 표 8-8 아래 두 번째 행, G=AB’ => G=A’B’
13) p223 6행, 공용 클럭 라인 => 공용 클럭 라인(CIK)
14) p227 그림 9-3, DD –or- SS => DD 또는 SS
15) p242 7행, op코드를 읽어온다 => op코드를 읽어서 해석한다
16) p301 9행, L1 캐쉬 이하 레벨 => L1 캐쉬 아래 레벨
17) p330 그림 12-1 아래 첫 번째 행, DB-24F => DB-25F
18) p360 아래에서 열 번째 행, 디스크 마스터(CD-ROM을 만드는 기계) => 마스터 CD
19) p363 두 번째 문단 1행,
플래쉬는 읽기 전용 메모리(EEPROM) 기술을 사용했음에도 읽기와 쓰기가 모두 가능한 반도체 장치이다.
=> 플래쉬는 EEPROM 기술을 한 단계 발전시켜 읽기와 쓰기가 모두 가능하게 만든 반도체 장치이다.
20) p365 아래에서 세 번째 행, 한 바이트보다 작다는 => 한 바이트 작다는
21) p391 3행, 주변장치만으로는 => 주변 장치 조합만으로는
22) p391 세 번째 문단 5행, 파이어월 => 파이어와이어
23) p393 [12.23.3 USB 전송 형식] 2행, 동시(isochronous) => 등시(isochronous)
2쇄, 3쇄 오류/오탈자
1) p72 그림 4-2 아래 3행
초과-127 포맷에서는 20을 나타낼 때, => 초과-127 포맷에서는 20을 나타낼 때,
2) p72 그림 4-2 아래 5행
가수는 1.0이고 지수는 20, => 가수는 1.0이고 지수는 20,