From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,ef33c33c4f98bde1 X-Google-Attributes: gid103376,public From: "Robert I. Eachus" Subject: Re: Compiler for Z80/6510 Date: 1999/12/03 Message-ID: <38482436.F6F36E5@mitre.org>#1/1 X-Deja-AN: 556319788 Content-Transfer-Encoding: 7bit References: <383c6fed.458467@news.fiam.net> <81k67s$47l$1@nnrp1.deja.com> <383DC86C.19A6F176@australia.boeing.com> <81m4m4$ci0$1@nnrp1.deja.com> <3845D4B4.98354460@mitre.org> <828n1c$8ir$1@nnrp1.deja.com> X-Accept-Language: en Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@news.mitre.org X-Trace: top.mitre.org 944251568 23506 129.83.41.77 (3 Dec 1999 20:06:08 GMT) Organization: The MITRE Corporation Mime-Version: 1.0 NNTP-Posting-Date: 3 Dec 1999 20:06:08 GMT Newsgroups: comp.lang.ada Date: 1999-12-03T20:06:08+00:00 List-Id: Robert Dewar wrote: > > I could go into details, > Please at least give references! Do you have copies of the SPARC architecture Versions 7 and 8? There were many instructions added to version 8 of the architecture. Even though not all existing SPARC processors supported them directly, version 8 added a number of instructions not in version 7. To comple with version 8 (and now version 9) of the reference manual, you had to support these instructions in a trap handler if they were not supported by the processor. There was a window where SunOS did not support the new instructions-- even by emulation. In fact the SunAda(VADS) 1.x compiler did not even allow these instructions in code inserts. However, I was able to create a package that contained "legitmate" implementations of these instructions and then edit the binary to use the new instructions. I couldn't use pragma INLINE on the operations, but when these functions were called the only overhead incurred was a function call rather than a call to a run-time routine that simulated integer multiplication and division. Of course I could and did override the Standard operators in the body of the using packages. As you know, SPARC subroutine calls are very efficient when everything can be done without creating an new stack frame. So I could get a several fold speed increase over asm writing in Ada. This was very handy when I was working on multi-precision arithmetic, prime numbers, and random number generators. One particularly useful pair of instructions did 32x32-->64 bit multiplies and 64/32-->32,32 divides. Of course, you had to be very careful since the Y register had a long latency on loads and stores from other registers. -- Robert I. Eachus with Standard_Disclaimer; use Standard_Disclaimer; function Message (Text: in Clever_Ideas) return Better_Ideas is...