목차
인클루드( include ) 파일 작성하기
인클루드 파일을 작성하여 소스를 간단히 해봅시다.
먼저, init.inc 파일을 만들고 각 파일의 상수 선언 부분을 인클루드 파일로 옮기겠습니다.
다음으로 각 파일의 맨 위에 아래 사진과 같이 코드를 추가해주세요.
인클루드 파일은 컴파일 시, 어셈블러에 의해 복사되어 소스의 해당 위치 부분에 추가됩니다.
리틀 엔디안과 빅 엔디안
뜬금없는 주제인 것 같지만, 디스크립터를 간결하게 작성하기 위해서 꼭 알아야 할 개념입니다. 메모리에 특정 값을 저장하는 지시어인 db, dw, dd 등을 별생각 없이 사용해왔습니다만, 값을 메모리에 저장하는 서로 다른 두 방식이 있습니다. 바로 리틀 엔디안과 빅 엔디안입니다. 두 방식의 차이점에 대한 구체적인 설명을 위해, dd 0x12345678 지시어를 예로 들겠습니다.
리틀 엔디안은 최하위 바이트 먼저 메모리에 저장합니다.
빅 엔디안은 최상위 바이트 먼저 메모리에 저장합니다.
대부분의 인텔 계열 CPU는 리틀 엔디안 방식을 사용합니다. 제 컴퓨터의 CPU를 살펴보면,
제 CPU 역시 리틀 엔디안 방식을 사용합니다. 그럼 이제 디스크립터를 좀 더 간결하게 바꿔보겠습니다.
디스크립터 작성법 바꾸기
dw와 db 지시어로 매우 길어진 코드입니다. dd 지시어를 통해 간결한 코드로 바꾸겠습니다.
훨씬 간결하게 표현할 수 있습니다.
vmware 시뮬레이션
이전 글과 동일하게 진행하시면 됩니다.
리틀 엔디안과 빅 엔디안
https://tcpschool.com/c/c_refer_endian
이번 글에서는 코드를 간소화하기 위한 몇 가지 기술들에 대해 알아보았습니다. 별 것 없어 보이고 간단하지만 매우 중요한 부분이라 꼭 짚고 넘어야 했습니다. 다음 글에서는 보호 모드에서의 인터럽트에 대해 알아보겠습니다.
감사합니다.
'OS' 카테고리의 다른 글
[32bit] 보호 모드로 진입하기 (0) | 2021.07.27 |
---|---|
[32bit] 디스크립터( descriptor )와 GDT ( Global Descriptor Table ) (1) | 2021.07.27 |
[32bit] 커널 프로그램 만들기 (0) | 2021.07.27 |
[32bit] 부트로더 작성하기 (0) | 2021.07.27 |
[32bit] 부트섹터에서 프로그램 꺼내기(2) (0) | 2021.07.27 |