Mail Archives: djgpp/2000/01/06/15:38:26
According to Eli Zaretskii:
> On Wed, 5 Jan 100, Martin Str|mberg wrote:
> > I've
> > tried pushing things to be able to restore them, but then I've got
> > some _really_ strange crashes (Invalid opcode, Stack fault, EIP
> > pointing into the middle of an instruction)!
>
> I don't think it's because of the pushing, but please show the code
> which did that.
I don't know because I tried everything I could so it hard to remember
what it was I was trying when that happened.
> Once again, I suggest to look at the function _i31_hook in dbgcom.c,
> it shows several examples of code that hooks Int 31h and *works*.
I've looked (although not extremely closely) and I thought I had tried
similar things (perhaps it was the following that messed it up).
> > /* Restore segments to valid DJGPP state. */
> > movw %cs:_my_ds, %ds
> > movw _my_ds, %es
> > movw _my_ds, %ss
>
> I don' think you can move values into segment registers directly, I
> think you need to use AX as intermediary.
Ah that might explain things. But how come gas gladly assemble it? And
objdump gladly disassembles it? Shouldn't I get an illegal intruction
fault if it's an illegal instruction (this is run on my 386SX)?
All About Eve,
MartinS
- Raw text -