louie@trantor.umd.edu (Louis A. Mamakos) (08/19/88)
I've discovered this bug in Lattice C, version 4.01 and reported it to
the Lattice customer support folks. It seems that if you subscript an
array (or pointer, same thing) with an unsigned short, the subscript is
still sign extended. This makes it impossible to have a subscript greater
than 32K using unsigned shorts.
The Lattice guy reproduced the problem, and thought that there would be
another patch to version 4 of the compiler before the next major release
(which is 5.0, I think along with the symbolic debugger).
Anyway, simple test program:
int *array;
unsigned short us;
func() {
int i;
i = array[us];
return i;
}
compile this with or without -b0, and look at the object file created
with OMD. You'll see an EXT.L; bad news.
LATTICE OBJECT MODULE DISASSEMBLER V2.00
Amiga Object File Loader V1.00
68000 Instruction Set
EXTERNAL DEFINITIONS
_foo 0000-00 _array 0000-02 _us 0004-02
SECTION 00 "test.o" 00000020 BYTES
int *array;
unsigned short us;
foo() {
0000 4E55FFFC LINK A5,FFFC
0004 BFEC 0000-XX.2 CMPA.L __base(A4),A7
0008 6500
000A 0000-XX.1
int i;
i = array[us];
000C 302C 0004-02.2 MOVE.W 02.00000004(A4),D0
0010 48C0 EXT.L D0 <=== WRONG! ===
0012 E580 ASL.L #2,D0
0014 206C 0000-02.2 MOVEA.L 02.00000000(A4),A0
0018 D1C0 ADDA.L D0,A0
001A 2010 MOVE.L (A0),D0
return i;
001C 4E5D UNLK A5
001E 4E75 RTS
SECTION 01 "__MERGED" 00000000 BYTES
SECTION 02 "__MERGED" 00000008 BYTES
Extra bonus bug:
When compiling a module with -b0 (absolute reference, rather
than off of A4), the compiler will not allow you to have more than
64K of data declared in the BSS section (at least). It seems logical
to prevent you from doing with if you don't specify -b0, since it would
be difficult to reference the data, but doesn't make sense otherwise.
This makes my port of TeX-in-C have to malloc() the various
arrays; the first bug makes it difficult to create non-trivial
documents using LaTeX with a 32K memory size. Once there problems are
worked out, I'll probably distribute my port, along with the dvi-to-
postscript translator for the amiga. My port of TeX doesn't run as fast
as AmigaTeX does, nor does it have loop mode and all that good stuff, but
its free. It also probably won't fit on a 512K machine either.
I suppose that if I really begin to do serious TeX work, I'll
probably spend the $200 and buy AmigaTeX. If the demo version on one
of the Fish disks is any indication, its is a wonderful product.
Once I hear back from Lattice, I'll follow up with what they've
decided to do.
Louis A. Mamakos WA3YMH Internet: louie@TRANTOR.UMD.EDU
University of Maryland, Computer Science Center - Systems Programming
phil@titan.rice.edu (William LeFebvre) (08/23/88)
In article <2993@haven.umd.edu> louie@trantor.umd.edu (Louis A. Mamakos) writes: > I suppose that if I really begin to do serious TeX work, I'll >probably spend the $200 and buy AmigaTeX. If the demo version on one >of the Fish disks is any indication, its is a wonderful product. YES! It is a wonderful product. The more recent version that I picked up earlier this year is even "wonderfuller" still. In some ways, my AmigaTeX environment is superior to the TeX environment on the Suns (the only two non-trivial minuses for the Amiga being the small/interlaced screen and the lack of speed). And when you compare AmigaTeX to commercially available TeX systems for other personal computers, AmigaTeX has more features and a suprisingly reasonable pricetag (how much is TeXtures now? $500?). I'd say more, but this is probably the wrong newsgroup. If anyone wants to hear me rave incessantly about AmigaTeX, just drop me a mail message. William LeFebvre Department of Computer Science Rice University <phil@Rice.edu>