16bit code generation

Austin English austinenglish at gmail.com
Sat Mar 21 22:00:16 CDT 2009


On Sat, Mar 21, 2009 at 8:28 PM, James McKenzie
<jjmckenzie51 at earthlink.net> wrote:
> Ben Klein wrote:
>> Oops, missed reply-to-all.
>>
>> 2009/3/22 Tijl Coosemans <tijl at ulyssis.org>:
>>
>>> I was reading through binutils documentation and came across this.
>>> Maybe it can be used to compile 16 bit tests.
>>>
>>> 3.2.4. 16-bit mode
>>> Binutils (2.9.1.0.25+) now fully support 16-bit mode (registers and
>>> addressing) on i386 PCs. Use .code16 and .code32 to switch between
>>> assembly modes.
>>>
>>> Also, a neat trick used by several people (including the oskit authors)
>>> is to force GCC to produce code for 16-bit real mode, using an inline
>>> assembly statement asm(".code16\n"). GCC will still emit only 32-bit
>>> addressing modes, but GAS will insert proper 32-bit prefixes for them.
>>>
>>
>> 16bit mode is required for building bootloaders. The question here is,
>> is it possible for Wine to run raw 16bit code when running under a
>> *nix kernel, which typically (always?) run in protected mode? I
>> believe it is not possible without some sort of 16bit emulator/wrapper
>> (e.g., current win16 libs are actually compiled as 32bit).
>>
>>
> Actually, the modern versions of Windows (Windows95 and up) use 16 to 32
> bit 'thunking' which is time consuming and not pretty.  It would be nice
> to get some of the legacy 16 bit applications running under Wine, but
> this will require a great deal of work and may not be worth the effort.
> This being said, there is always the one user that has a legacy
> application which they must have.
>
> James McKenzie
>
>
>
>

Wine supports 16 bit apps, just not as well as 32-bit. Dan had an
intern work on a 16 bit test suite
(http://code.google.com/p/win16test/), which can be used to test 16
bit support, fwiw.

--
-Austin



More information about the wine-devel mailing list