Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!news.glorb.com!usenet.stanford.edu!usenet.osg.ufl.edu!news.lightlink.com!news.iecc.com!nerds-end From: Christophe de Dinechin Newsgroups: comp.compilers Subject: Re: Language Design Date: Sat, 23 Jul 2011 08:17:37 -0700 (PDT) Organization: Compilers Central Lines: 41 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <11-07-036@comp.compilers> References: <11-07-027@comp.compilers> NNTP-Posting-Host: news.iecc.com X-Trace: gal.iecc.com 1311545380 11272 64.57.183.58 (24 Jul 2011 22:09:40 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Sun, 24 Jul 2011 22:09:40 +0000 (UTC) Keywords: design Posted-Date: 24 Jul 2011 18:09:40 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: x330-a1.tempe.blueboxinc.net comp.compilers:212 On Jul 18, 10:16 pm, Billy Mays <81282ed9a88799d21e77957df2d84bd6514d9...@myhashismyemail.com> wrote: > I am trying to design a programming language for a simple processor > (16 bit, ~10 instructions, 16 registers). I am not sure what a > language actually needs in order to be more useful than pure assembly, > but is also reasonable to implement. Bill, Is your objective to invent a language, or have a language that works on that simple processor? You may be interested in XL (http:// xlr.sf.net). The XL2 portion of it is very easy to retarget, and it is a high level language which you can then tweak to explore various language or CPU design ideas. Basically, say you want to add a 16-bit unsigned type and the associated multiply-add, where the assembly syntax is "fma16 target = src1, src2, src3", all you need to do is: - Modify xl2/native/library/runtime/C/xl_builtins.xs with the required language declarations: type uint16 is XL.BYTECODE.uint16 function FusedMultiplyAdd(X, Y, Z: uint16) return uint16 written X*Y+Z is XL.BYTECODE.fma_uint16 - Add the corresponding target syntax in the bytecode file fma_uint16 "fma16 $1 = $2, $3" If that approach works for you, you can create your own "runtime" by replicating the "C" directory (which targets standard C compilers) and creating a directory for your target, say "myproc". Then, you run the compiler with "nxl -r myproc foo.xl" and it will compile using this runtime. Hope this helps Christophe