ANNOUNCE: full 16 bit code support for GAS/x86

Martynas Kunigelis (martynas@nm3.ktu.lt)
Mon, 20 Apr 1998 12:30:51 +0200


Hello Linuxers,

I added somewhat full 16 bit code generation support to the GNU as on
x86 platforms. Here's a link to a patch against binutils-2.9.0.3:

http://nm3.ktu.lt/~martynas/binutils-2.9.0.3-16bit.diff.gz

The connection may be slow, but the file is only 8K anyway. I did this
because I'm in a process of writing a new Linux boot loader similar to
GRUB, and I needed to write the 16 bit boot sector code and the code
that switches to protected mode. On the other hand, it is now possible
to rewrite setup.S and video.S from Linux kernel with GAS and get rid of
as86/ld86 for kernel compilation.

GAS with my patch supports the following 'features' in .code16 mode:

o 16 bit memory addressing (e.g. movb variable, %al)
o 16 bit base/index register addressing (e.g. movb %al, 10(%bx,%si))
o 16 bit jumps
o 16 bit calls
o 16 bit intersegment jumps/calls

I also added two new opcode prefixes: "addr32" and "data32", you can use
them to force GAS to output an address/data size prefix and widen the
address/data operand to 32 bits (and you can do the opposite with
"addr16"/"data16" in .code32 mode).

I basically need some testers to make sure I didn't break anything in
the 32 bit code part, so that GAS can still be reliably used as the GCC
backend. Questions, comments, suggestions, bug reports are very welcome.

Best regars,
Martynas

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu