bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

16-bit code in GAS


From: Mikulas Patocka
Subject: 16-bit code in GAS
Date: Fri, 15 Aug 2003 15:44:13 +0200 (CEST)

Hi

When I upgraded gas to 2.14, i found that it can't generate 32-bit
addresses in 16-bit mode (.code16) directive.

$ as
.code16
movl $0x12345678, 0xabcdef01
{standard input}: Assembler messages:
{standard input}:2: Warning: -1412567295 shortened to 61185
$ objdump --disassemble

a.out:     file format elf32-i386

Disassembly of section .text:

00000000 <.text>:
   0:   66 c7 06 01 ef          movw   $0xef01,(%esi)
   5:   78 56                   js     0x5d
   7:   34 12                   xor    $0x12,%al
A
The resulting instruction should have prefixes 66 and 67 and should have
32-bit address.

Info page says, the the function of instructions in 16-bit mode is
exacltly the same as in 32-bit mode, but it's not true.

Older versions of gas generated both address and instruction prefixes and
generated 32-bit address.

How can I write 32-bit code that runs in a segment with default operand
size 16 (without 'D' bit set)?

Mikulas





reply via email to

[Prev in Thread] Current Thread [Next in Thread]