This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

I think that may be a bug...


I am making a OS for a PC/AT compatible machine with gcc on ubuntu.
The code , whose extension is .c , to task switch in the handler for PIT(timer) interrupt is...
int tr=(a selector(segment number));
farjmp(0,tr);

the function prototype is
farjmp(int eip,int cs);

farjmp() is defined in another source file whose extension is .S.
the definition is... ('_' means tab.)
farjmp:
_jmp far [esp+4]
_ret

The compile option for both is 'gcc -pipe -ffreestanding -fno-common -fno-builtin -fomit-frame-pointer -c -masm=intel'

But,That wouldn't work well.
I compared machine code of the result of above with that made by nasm.
the results are...
gcc said  FF A4 24 0A FF 00 00
nasm said FF 6C 24 04

The machine code made by nasm worked as I want.

Is that bug ,or my mistake?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]