10. November 2024, 22:39
The base addresses of the GDT should be aligned on an eight-byte boundary to yield the best processor performance.
The base addresses of the IDT should be aligned on an 8-byte boundary to maximize performance of cache line fills.
An dem Registerdump ist auffällig, dass fast alle Register 0 sind und der Wert in ESP nicht durch 4 teilbar ist. Die Adressen von GDT und IDT sind ebenfalls krumm. Beides tut der Performance nicht unbedingt gut.
_schlafen_Anzahl dd 0PIT_initialieren: mov dword [_schlafen_Anzahl], 0 push ax push dx mov dx, 0x43 mov ax, 0x36 out dx, ax mov ax, 1193 and ax, 0xFF mov dx, 0x40 out dx, ax mov ax, 1193 shr ax, 8 out dx, ax pop dx pop ax IRQ_Handler_setzen 0, _schlafen_Handler ret_schlafen: call PIT_initialieren push ebp mov ebp, esp push eax _schlafen_Test: mov eax, [ebp+8] cmp eax, [_schlafen_Anzahl] jg _schlafen_Test mov dword [_schlafen_Anzahl], 0 pop eax mov esp, ebp pop ebp ret 4 _schlafen_Handler: inc dword [_schlafen_Anzahl] ret