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