에 나는이 코드 조각 문제를 겪고 : loop :
jmp loop
times 510 -($ - $$) db 0
dw 0 xaa55
것은 그것은 나에게 말하는 오류를주고있다 : boot.asm:6: error: comma expected after operand 1 나는이 원인을 알 수 없습니다. 방금 OS를 개발하기 시작
현재 운영체제를 개발 중입니다. 페이징 과정에서 페이지 폴트 처리기를 만들고 있습니다. 페이지 오류 처리기 write_cr0 :
push ebp
mov ebp, esp
mov eax, dword[ebp+8]
mov cr0, eax
pop ebp
retn
는 오프 또는 페이징 켜 상기 write_cr0 기능을 사용할 CR0 레지스터의 PG 비트
나는 녹스에 OS를 쓰고 있으며 계산중인 가상 주소 (u32)를 직접 호출해야합니다. 나는 이것이 상대적으로 단순 할 것이라고 예상했다 : let code = virtual_address as (extern "C" fn());
(code)();
그러나 이것은 캐스트가 비 프리미티브 (non-primitive)라고 불평한다. 그것은 내가 From 형질을
어셈블리를 배우는 동안 커널이 어떻게 작동하는지 배우려고합니다. 부트 가능한 x86_64 커널을 만드는 방법을 배우는 과정에서 문제가 발생했습니다. I 0xB8000의 VGA 버퍼를 사용하여 "main.c"(아래의 모든 파일)에있는 함수가있는 텍스트를 성공적으로 출력하려고 시도했습니다. 커널 프로토 타입의 32 비트 버전과 같은 방식이지만 차이점은 시작 파
NASM 어셈블러를 사용하여 스스로 부트 로더를 작성하려고합니다. 두 줄의 텍스트를 인쇄하고 키 누르기를 기다렸다가 키를 눌렀을 때 재부팅하려면 'r'키를 누르고 b 키를 누르면 계속 부팅하려고합니다. 그러나 그것은 내 질문의 대상이 아닙니다. (나중에이 기능을 구현할 것이므로 코드의 nop 지침을 즉시 작성합니다.) 오히려 왜 내 개행 문자 0xA이 그런
GCC을 사용하여 간단한 운영 체제를 작성하려고하는데, 입력 한 디스플레이에 텍스트를 표시 할 수 있습니다. 나는 C에 인터럽트 테이블을 가지고 있는데 외부 어셈블리 언어 모듈보다는 인라인 어셈블리를 사용하여로드 할 수 있기를 원합니다. 내가 찾고있는 것은 C 인라인 어셈블리에 포인터를 전달하는 방법입니다. 메모리 피연산자 LIDT 인 요구 I 인라인를 시
boot.img 파일의 섹터 37에있는 코드 세그먼트가 있고 마스터 부트 레코드에이 코드를 메모리 0x5678에로드했습니다 : 0x1234, 여기에 내 ASM 코드 :이시에 제출 넣으면 [BITS 16] ;Set code generation to 16 bit mode
ORG 0x1234 ;set addressing to begin at 0x567