lkml.org 
[lkml]   [2007]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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/

\
 
 \ /
  Last update: 2007-07-10 23:27    [W:0.458 / U:0.904 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site