mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: <cutaway@bellsouth.net>
To: "Denis Vlasenko" <vda@ilport.com.ua>, <linux-kernel@vger.kernel.org>
Cc: <mikpe@csd.uu.se>
Subject: Re: 387 emulator hack - mutant AAD trick - any objections?
Date: Fri, 27 May 2005 07:43:07 -0400	[thread overview]
Message-ID: <002e01c562b1$463ec760$2800000a@pc365dualp2> (raw)
In-Reply-To: <200505271235.41353.vda@ilport.com.ua>

You're right about AAD16 Denis :)

Sometimes my mind forgets we're not dealing with something having only 4K of
ROM/RAM to play with.  An embedded Linux won't fit on THAT ;->  A few bytes
more here is definately worth it.  No matter anyway, I've managed to rip
several hundred bytes out of the emulator in the .S assembler files and made
it faster in the process.  I've just now started looking at the .c files and
this opportunity kind of jumped out at me and seemed significant since this
BCD stuff is common in C runtimes printf/sprintf for generating displayable
floating point numbers.

AAM/SHL/OR/MOV looks like a big win though compared to multiple trips
through the extended precision divide routines for a BCD pair.

Mikael: The reason I say "quasi/mutant" is because Intel didn't officially
confess to this particular AAD behavior until many years later.  All the
earlier 8086-486 programmer refs describe only the base 10 form (i.e. their
instruction pseudocode in those manuals is in fact wrong).  As Denis
mentions, it was NEC (on the V20/V30) who got one of these wrong by trusting
the printed manual rather than the silicon - never a good thing to do with
Intel ;->   It took Intel until the Pentium to confess to SETALC's existence
which had been around since 8088/86.<g>

 Tony

----- Original Message ----- 
From: "Denis Vlasenko" <vda@ilport.com.ua>
To: <cutaway@bellsouth.net>; <linux-kernel@vger.kernel.org>
Sent: Friday, May 27, 2005 05:35
Subject: Re: 387 emulator hack - mutant AAD trick - any objections?


> On Friday 27 May 2005 10:44, cutaway@bellsouth.net wrote:
> > Brain fade...example should be:
> >
> > 1) Start with AX = 0x0023
> > 2) Execute AAM instruction
> > 3) Now AX = 0x0305 (unpacked BCD)
> > 4) Execute base 16 AAD instruction
> > 5) Now AX = 0x0035 (packed BCD)
>
> Intel syntax:
>
> shl ah,4
> or al,ah
> mov ah,0  (if needed)
>
> No need to use AAD16, it is
> a) doesnt work on some obscure ancient NEC x86 clones IIRC
> b) is microcoded (slow)
> --
> vda
>
> -
> 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/


  reply	other threads:[~2005-05-27 10:50 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-27  7:44 cutaway
2005-05-27  9:35 ` Denis Vlasenko
2005-05-27 11:43   ` cutaway [this message]
2005-05-27 12:24   ` Maciej W. Rozycki
2005-05-27 13:47     ` cutaway
  -- strict thread matches above, loose matches on Subject: below --
2005-05-27  7:11 cutaway
2005-05-27  7:25 ` Mikael Pettersson
2005-05-27 12:17   ` Maciej W. Rozycki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='002e01c562b1$463ec760$2800000a@pc365dualp2' \
    --to=cutaway@bellsouth.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mikpe@csd.uu.se \
    --cc=vda@ilport.com.ua \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®