일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- command
- Overwatch League SaberMetrics
- libtins
- BEST of the BEST
- 오버워치
- #Best of the Best #OS #MINT64 #Sqix
- ftz
- #
- linux
- 인터럽트
- #IntelManual
- libpcap
- Find
- vi
- >
- KASAN
- Network
- 오버워치 세이버메트릭스
- FTZ 레벨2
- Sqix
- #MINT64 #Sqix
- vim
- C++11
- #IntelManual #segment Descriptor #세그먼트 디스크립터 #MINT64 #Sqix
- #Qt Creator
- vi 외부 명령어
- Today
- Total
목록전체 글 (76)
Sqix
이번 글은 OS를 로딩하기 위한 과정에 대해 다룹니다. 뭐 일단 부트로더를 만들고 원하는 메세지를 나오도록 출력을 하긴 했습니다만, 가장 중요한 역할인 OS 이미지를 읽어서 메모리로 복사하도록 하는 코드를 작성하지 않았습니다. 더군다나 이걸 로딩해서 쓰려면 아무래도 32비트 혹은 64비트 커널 개발을 하고 OS 이미지를 만들어야 하는데, 이건 나중에 하고 가상 이미지를 만들어 보는 것으로 진행하겠습니다. OS를 로딩하기 위해서는 BIOS 서비스를 이용해야 합니다. 따라서, 먼저 BIOS에 대해서 알아보겠습니다. BIOS는 우리에게 Interrupt라는 방식을 이용해서 서비스를 제공합니다. 기능이 담긴 함수 주소를 Interrupt Vector Table(IVT)에 담아서 우리가 Software Inter..
이번 글은 부트로더 제작에 대해 다룹니다. 기존에 제작한 부트로더는 QEMU 기본 출력만 나와 있었습니다. 이제 보다 그럴듯하게 부트로더를 만들어 보도록 합시다. (출처 : http://byuljong.tistory.com/88) 화면에 글자를 출력하기 위해서는 Video Memory의 주소를 알아야 합니다. 메모리에 형식에 맞춰 데이터를 넣는다면 원하는 것을 출력할 수 있습니다. Default 화면 설정은 80*20의 크기를 가지며, 시작 Address는 0xB8000입니다. 한 문자당 1byte씩의 문자, 속성값을 가지고, 따라서 메모리 크기는 80*25*2 == 4000 byte입니다. 위 그림에서 보이다시피, 속성값은 0~3비트의 전경, 4~7비트의 배경색으로 나뉩니다. 이는 다시 Attribut..
이번 글은 부트 로더에 대해 다룹니다. 이전에도 언급하였듯, 부트로더는 마지막 2바이트를 이용하여 검증합니다. 즉, 0x55, 0xAA를 적어 놓는다면 이를 부트로더로 인식하여 동작을 시킵니다. 하지만, 이전에도 언급하였듯 부트로더는 어셈블리 언어로 작성을 해야 합니다. 따라서 먼저 가장 기본적인 어셈블리 명령어들에 대해 간단히 알아봅시다. ASM● 사칙 연산 - add A, B A + B 연산을 진행하고, 결과를 A에 저장- sub A, B A - B 연산을 진행하고, 결과를 A에 저장- mul A AX의 레지스터 값과 A를 곱하고 AX 혹은 DX:AX에 저장- inc A A에 1을 더해 A에 저장- dec A A에 1을 빼 A에 저장- div A AX 혹은 DX:AX를 A로 나누어 몫을 AL 혹은 A..