какие вопросы можно было бы задать модели, что бы и ответ не подсказать и понять, на сколько глубоко она понимает это?
Я не могу увидеть что вызвало проблему.
sd_kcode:
dd 0x0000ffff
db 0x00
db 0x8a
db 0xcf
db 0x00
dd 0x0000ffff
db 0x00
db 0x9a
db 0xcf
db 0x00
состояние после выполнения
cr0
совсем не такой каким должен быть.-d in_asm,exec,cpu -D logfile
, результатом будет лог исполняемых команд процессора в интерпретации qemu и состояния регистров на момент начала выполнения блоков кода. Тебе останется найти в этом логе адрес 0x7c00
чтобы увидеть процесс выполнения своего кода. strace -e read cat /dev/input/mice
, там будет видно что из системного вызова read()
приходит 3 байта:read(3, "\10\1\0", 131072) = 3
read(3, "\10\1\0", 131072) = 3
read(3, "\10\4\0", 131072) = 3
read(3, "\10\3\1", 131072) = 3
read(3, "\10\1\0", 131072) = 3
read(3, "\10\1\0", 131072) = 3
Где я натупил?
$ cat test.S
.text
far_jump_to_kernel:
.byte 0x66
.byte 0xEA
.word 0x7777
.short 0x0008
$ gcc -c -m32 test.S -o test.o
$ objdump -d test.o
test.o: file format elf32-i386
Disassembly of section .text:
00000000 <far_jump_to_kernel>:
0: 66 ea 77 77 08 00 ljmpw $0x8,$0x7777
Пытался смоделировать дифракцию на круглом отверстии, но верный ответ получается только в центре.
Использовал интеграл Кирхгофа в виде суммы
Дело в том, что при загрузке программы загрузчик перезаписывает в ней всякие адреса, которые используются при вызовах функций и переходах.