Path: utzoo!attcan!uunet!decwrl!sdd.hp.com!uakari.primate.wisc.edu!samsung!umich!yale!husc6!encore!pinocchio.encore.com From: jkenton@pinocchio.encore.com (Jeff Kenton) Newsgroups: comp.sys.m88k Subject: Re: 88000 assembly code Message-ID: <12315@encore.Encore.COM> Date: 27 Jul 90 13:28:39 GMT References: <1872@hsi86.hsi.UUCP> Sender: news@Encore.COM Lines: 39 From article <1872@hsi86.hsi.UUCP>, by hogue@hsi.UUCP (Jim Hogue): > I am having troule with the gnu C compiler on an AViiON. Specifically > I am running DG-UX (version 4.30) and with the optimiser on, the > compiler produces code that the assembler barfs on. The function is > rather large and I would like to narrow it down before I ask for > detailed help. But in the mean time I don't have any knowledge of nor > texts that describe the 88000 assembler. Question is what does br.n > addr do? Is it an unconditional branch or is it branch not equal to 0 > or something else? As usual help is greatly appreaciated! > > FYI, from memory the code generated is something like > > br.n addr1 > or r1,r2,r3,0x1234 > addrn add r10,r2,0x400 > > The assembler complains that or instructions cannot have 4 operands! The assembler is right (naturally) -- the compiler is producing broken code. "or" instructions, and many others, have only 3 operands. None has 4 operands, although some have 1 or 2 (or none). The br.n instruction is an unconditional branch. The ".n" causes the "next" instruction (physically after the br.n) to be executed before doing the branch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jeff kenton --- temporarily at jkenton@pinocchio.encore.com --- always at (617) 894-4508 --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -