[comp.sys.amiga.tech] Lattice Bugs

451061@UOTTAWA.BITNET (Valentin Pepelea) (07/24/89)

Well, while coding a rather simple (small) project in a mixture of C and
assembler, I seem to have stepped over every single bug in the Exec and the
Lattice 5.02 package. Here are the bugs I found in the Lattice assembler:

1) In the  "BFFFO   var,{offset,width},d0" instruction, the first comma is
   not supposed to be required.

2) 32-bit base displacements are mishandled. They sould be handled just like
   8 and 16-bit offsets, but instead absolute values are required. For example

        jmp    table(pc,d1.w*4)

   will generate code as if the label "table" was equal to zero.

        jmp    $0(pc,d1.w*4)

3) Improper code generation when relative code is to be produced. For example
   if "label" is within the program hunk, then the instruction

        move   d0,label

   will generate the code

        move   d0,label(pc)

   wich is an illegal addressing mode. You can not store within the program
   space like that. The assembler should either use an appropriate addressing
   mode, generate an error, or at least generate a strong warning.

4) The following instruction has an exagerrated limitation on it:

        ptestr #3,addr,#3

   I should be allowed to specify immediate numbers up to seven, but instead I
   am limited to three.

5) In <proto/exec.h> AllocAbs should be defined as (void *), not just (void).

Well, I can get around all these bugs, except for #2. Please fix the 32-bit
base displacement generation.

Valentin
_________________________________________________________________________
"An  operating  system  without         Name:   Valentin Pepelea
 virtual memory is an operating         Phonet: (613) 231-7476 (New!)
 system without virtue."                Bitnet: 451061@Uottawa.bitnet
                                        Usenet: Use cunyvm.cuny.edu gate
         - Ancient Inca Proverb         Planet: 451061@acadvm1.UOttawa.CA