Hello,
I am currently testing my OS under qemu and it seems that there is a great problem with MOV emulation. Indeed, in the ELF I am launching under my OS, the instruction :
Code: Select all
8b 15 40 80 00 40 mov 0x40008040,%edx
is interpreted as follows :
Indeed, I could see that the value 0x8e0f0100 (instead of 0x40008040) was put into EDX register by manually inserting breakpoints in the ELF code. After the ELF was loaded into memory by my loader, I printed some debug lines to make sure that the memory location where the instruction resided did contain valid data, and it was the case (it did contain these six bytes : 8b 15 40 80 00 40). I am also sure that the instruction is executed by the emulator (also used breakpoints to make sure of it). Moreover, it has probably nothing to do with my task scheduler, because interrupts are disabled during registers backup procedure.
Where does the problem come from, according to you ?