Messages in this thread | | | Date | Tue, 10 Jul 2007 14:20:09 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [x86 setup 13/33] Header file to produce 16-bit code with gcc |
| |
Pawel Dziepak wrote: > > Unfortunately, .code16gcc is still experimental (at least binutils' > website says that). What is worse, it says that it is possible that > 16bit code produced on GCC won't work on pre-80386 processors (before > switching to protected mode you have to think about cpu as a > pre-80386). >
.code16gcc has been in production use in real projects since at least 2001.
16-bit code produced by gcc is indeed, guaranteed to not work on pre-386 x86s, but so is the code we had there before. Saying "before switching to protected mode you have to think about [the] cpu as a pre-80386" is blatantly false; 32-bit registers and addressing are readily available in real mode using size override prefixes (which is what ".code16gcc" takes care of.)
> I don't think that -m16 flag will be introduced quickly. In fact, only > OS developers _sometimes_ use 16 bit code... > > I did a fast test and now I know that assembler instructions are > almost ignored by GCC and passed to gas. The situation is the same > with .code16gcc, what mean that gas has to translate 32bit code from > GCC to 16 bit code. The result binary was correct 16 bit program (at > least its code looked good), but it is IMHO too many translations from > C to 32bit assembler and then to 16bit assembler, that can cause > unpredictable errors.
You're saying "I don't understand it, and it scares me." The differences compared to standard .code16 are pretty minute, mostly in the matter of a couple of different default sizes (e.g. "call" defaults to "calll" not "callw".)
> Additionally, I prefer to write architecture depend procedures in > assembler (but is only *my* opinion, and you probably disagree). > Assembler is faster, you have bigger control over the code, and > portability of C is in this circumstances not necessary.
... and the code is an utter, unmaintainable mess.
-hpa - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |