home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / c / comp9302.zip / 93-02 next >
Text File  |  1993-02-28  |  419KB  |  10,296 lines

  1.  
  2. From compilers Mon Feb  1 07:00:12 EST 1993
  3. Xref: iecc comp.compilers:4171 news.answers:5261
  4. Newsgroups: comp.compilers,news.answers
  5. Path: iecc!compilers-sender
  6. From: compilers-request@iecc.cambridge.ma.us (John R. Levine)
  7. Subject: comp.compilers monthly message and Frequently Asked Questions
  8. Message-ID: <monthly-Feb-93@comp.compilers>
  9. Followup-To: poster
  10. Keywords: administrivia
  11. Sender: compilers-sender@iecc.cambridge.ma.us
  12. Supersedes: <monthly-Jan-93@comp.compilers>
  13. Organization: Compilers Central
  14. Date: Mon, 1 Feb 1993 12:00:06 GMT
  15. Approved: compilers@iecc.cambridge.ma.us
  16. Expires: Mon, 1 Mar 1993 23:59:00 GMT
  17.  
  18. Archive-name: compilers-faq
  19.  
  20. This is the comp.compilers monthly message, last edited February 1993.
  21.  
  22. NOTE:  At the end of this message are some answers to frequently asked
  23. questions.  Please read them before you post.
  24.  
  25. -- What is comp.compilers?
  26.  
  27. It is a moderated usenet news group addressing the topics of compilers in
  28. particular and programming language design and implementation in general.
  29. It started in 1986 as a moderated mailing list, but interest quickly grew to
  30. the point where it was promoted to a news group.  Recent topics have
  31. included optimization techniques, language design issues, announcements of
  32. new compiler tools, and book reviews.
  33.  
  34. Messages come from a wide variety of people ranging from undergraduate
  35. students to well-known experts in industry and academia.  Authors live all
  36. over the world -- there are regular messages from the U.S, Canada, Europe,
  37. Australia, and Japan, with occasional ones from as far away as Malaysia.  I
  38. have no idea how large the readership is, since the anarchic nature of
  39. usenet makes it impossible to tell who reads it, but I believe that the total
  40. is in the tens of thousands.
  41.  
  42. Unless there is specific language to the contrary, each message represents
  43. only the personal opinion of its author.  I claim no compilation copyright on
  44. comp.compilers.  As far as I am concerned, anyone can reproduce any message
  45. for any purpose.  Individual authors may retain rights to their messages,
  46. although I will not knowingly post anything that does not permit unlimited
  47. distribution in any form.  If you find comp.compilers useful in writing a
  48. book, producing a product, etc., I would appreciate an acknowledgement of
  49. usenet and comp.compilers.
  50.  
  51. -- How do I receive it?
  52.  
  53. The easiest way is to read comp.compilers on a system that gets usenet news.
  54.  
  55. If you don't have access to usenet news, it's also available via E-mail via
  56. a LISTSERV forwarder at the American University.  To subscribe a person
  57. should send e-mail to listserv@american.edu with one line in the mail
  58. message (not in the subject!)  That line should read:
  59.  
  60.                         SUBSCRIBE COMPIL-L full_name
  61. for example:
  62.                         SUBSCRIBE COMPIL-L Ima Hacker
  63.  
  64. To get off the list the subscriber should send e-mail to the same address
  65. with the message:       SIGNOFF COMPIL-L
  66.  
  67. If you have problems getting on or off the list, please contact me.  In
  68. particular, if you want to use an address other than your own personal mail
  69. address, you have to ask me to set it up.
  70.  
  71. -- How do I submit a message?
  72.  
  73. Mail it to compilers@iecc.cambridge.ma.us, also known as compilers@iecc.uucp
  74. or iecc!compilers.  I review messages nearly every day, usually including
  75. weekends, and most messages are posted to the net within a day after I
  76. receive them.  Occasionally when I go on vacation there may be up to a
  77. week's delay, though I try to send out a message when that will happen.
  78.  
  79. Most net news systems will automatically turn posted messages into mail to
  80. compilers, but some, particularly systems running notes, don't do that
  81. correctly.  As a result, I sometimes receive hundreds of copies of a
  82. message, all mangled slightly differently.  Please mail your contributions
  83. unless you're sure your posting software works correctly.
  84.  
  85. When you send a message to compilers, I understand that to mean that you
  86. want me to post it to usenet, which means it will be sent to tens of
  87. thousands of potential readers at thousands of computers all around the
  88. world.  It may also appear in a printed comp.compilers annual and other
  89. books, in the ACM SIGPLAN Notices, in on-line and off-line archives,
  90. CD-ROMs, and anywhere else that some reader decides to use it.
  91.  
  92. If you don't want me to post something, send it instead to
  93. compilers-request.  (See below.)
  94.  
  95. -- What happens to submitted messages?
  96.  
  97. Barring mail problems, they arrive in a special mailbox here at iecc.  I
  98. then edit the headers, trim down quoted text, fix typos and grammatical
  99. errors, remove cute signatures, and then post them to usenet.  If I think a
  100. message needs more editing than that, I return it to the author for
  101. rewriting.  The main reasons I return a message are that it appears more
  102. appropriate for another group, the message is too garbled to fix, it
  103. contains too much quoted material relative to the amount of new material, or
  104. I don't understand it.  I also usually return messages that directly attack
  105. individuals, since the net has plenty of other places for ad-hominem battles.
  106. Another possibility is that a message doesn't have a valid return e-mail
  107. address.  If your mail system insists on putting a bogus address in the From:
  108. line, be sure that you put a usable address in your signature.
  109.  
  110. If a message asks a simple question I sometimes answer it myself rather than
  111. posting it.  When two or three messages arrive with the same answer to a
  112. question, I usually post only one of them, with a comment crediting the
  113. others.
  114.  
  115. If you send in a message and don't either see it posted or receive something
  116. back in a few days, it probably got lost in the mail and you should contact
  117. me, preferably via a different mail route.  I post or respond to all
  118. messages except for ones that appear to have been sent by mistake, e.g. no
  119. contents, or contents consisting only of another quoted message.  Sometimes
  120. when I'm feeling exasperated I disregard messages that re-ask one of the
  121. frequently asked questions that are answered below.
  122.  
  123. One of the most time-consuming jobs in moderating the group is trimming down
  124. the quotes in followup articles.  In most cases, you can expect readers to
  125. have seen the previous article, so only a few lines of quoted text should be
  126. needed to remind the reader of the context.
  127.  
  128. I have installed a simple-minded quote filter that mechanically returns to
  129. the sender any message that contains more quoted than unquoted lines.  Please
  130. edit your quotes before you send in a response, to avoid having the filter
  131. bounce your message.  Since the quote filter is pretty dumb, I do look at
  132. bounced messages myself.  If the filter bounces a message of yours by mistake,
  133. don't panic -- it'll get posted anyway.
  134.  
  135. ``Help wanted'' and ``Position Available'' messages are collected each week
  136. and posted in a digest every Sunday.
  137.  
  138. -- How do I respond to the author of a message?
  139.  
  140. I try to be sure that every message contains valid From: and Reply-To:
  141. headers.  The automatic "reply" commands in most news readers let you send
  142. mail to the author.  If you're replying to a message in a digest, be sure
  143. to respond to the author of the particular message, not to the pseudo-author
  144. of the digest.
  145.  
  146. Some obsolete news readers attempt to reply using the Path: header, but for
  147. technical reasons the Path: header in a moderated message cannot point to
  148. the actual author.  In fact, the Path: header in a compilers message is
  149. deliberately a bad mail address, so if you have such a news reader you'll
  150. have to edit the addresses in responses yourself and, I hope, encourage your
  151. system manager to update your news and mail software.
  152.  
  153. Sometimes mail to an author bounces, either because a gateway isn't
  154. working or because the return address is unregistered or otherwise bad.
  155. Please don't ask me to forward it, since my machine is no better connected
  156. than anyone else's.  (It's not on the Internet and only talks uucp.)  If
  157. you send me a message obviously intended for the author of an item, I will
  158. discard it on the theory that if it wasn't important enough for you to
  159. send it to the right place, it isn't important enough for me, either.
  160.  
  161. -- How do I contact the moderator?
  162.  
  163. Send me mail at compilers-request@iecc.cambridge.ma.us.  If for some
  164. reason your system chokes on that address (it shouldn't, it's registered)
  165. mail to Levine-John@yale.edu or johnl@spdcc.com will get to me.  I treat
  166. messages to compilers-request as private messages to me unless they state
  167. that they are for publication.
  168.  
  169. -- Are back issues available?
  170.  
  171. I have complete archives going back to the original mailing list in 1986.
  172. The archives now fill about 6 megabytes, and are growing at over 200K per
  173. month.  I update the archives at the end of each month.  People with ftp
  174. access can get them from primost.cs.wisc.edu, (128.105.2.115) where James
  175. Larus has kindly provided space.  The archives contain a compressed Unix
  176. mailbox format file for each month, with names like 91-08.Z.  The file
  177. INDEX.Z lists all of the subject lines for every message in the archives,
  178. and in most cases is the first file you should retrieve.
  179.  
  180. The archives are available via modem from Channel One, an excellent local
  181. BBS.  You have to register, but no payment is needed to download the
  182. archives which are in Area 6.  (If you call more than once or twice, it
  183. would be nice to sign up for at least the $25 trial membership.)  The 2400
  184. BPS telephone number is +1 617 354 8873, and the Telebit number is +1 617
  185. 354 0470.  There is a ZIP format archive per month with names like
  186. comp9108.zip, with the most recent archive also containing the index.
  187.  
  188. There is now a mail server at compilers-server@iecc.cambridge.ma.us that can
  189. mail you indexes, messages, and the files mentioned below.  Send it a
  190. message containing "help" to get started.
  191.  
  192. I have also published a printed edition of the 1990 messages grouped
  193. by thread and topic, and with some indexes, and expect to publish a
  194. 1992 and maybe 1991 edition.  Send me mail for further details, or
  195. see the message about the book which should immediately follow this
  196. one.
  197.  
  198. -- Some Frequently Asked Questions:
  199.  
  200. NOTE: Many issues are discussed occasionally on comp.compilers, but not
  201. frequently enought to make the FAQ sheet.  If you have a question but the
  202. answer isn't in the FAQ, you may well be able to get good background by
  203. reading the appropriate articles in the archive.  If you can FTP, please
  204. at least get the index and look through it.
  205.  
  206. The various files that I mention below that I have are in the compilers
  207. archive at primost.cs.wisc.edu, and are also available from the mail
  208. server mentioned above.  If you can FTP them, please do so rather than
  209. using the mail server, since the mail bandwith is quite small.
  210.  
  211. * Where can I get a C or C++ grammar in yacc?
  212.  
  213. Jim Roskind's well-known C++ grammar is in the archive, as is a C grammar
  214. written by Jeff Lee.  Dave Jones posted a parser as message 91-09-030.
  215. Another C grammar was posted to comp.sources.misc in June 1990, v13 i52,
  216. archive name ansi-c_su.  GCC and G++ are based on yacc grammars, see
  217. below.
  218.  
  219. * Where can I get the Gnu C compiler?
  220.  
  221. GCC is a high-quality free C and C++ compiler.  (Free is not the same as
  222. public domain, see the GCC distribution for details.)  It is available in
  223. source from from prep.ai.mit.edu.  You need an existing C compiler and
  224. libraries to bootstrap it.
  225.  
  226. A version for 386 MS-DOS by DJ Delorie <dj@ctron.com> is available by FTP
  227. from barnacle.erc.clarkson.edu or wowbagger.pc-labor.uni-bremen.de and by
  228. mail from archive-server@sun.soe.clarkson.edu in the archive msdos/djgpp.
  229. See messages 91-09-054 and 91-09-066.
  230.  
  231. * Are there other free C compilers?
  232.  
  233. The lcc compiler, written by people at Princeton and Bell Labs, is
  234. available via FTP from princeton.edu.  It is supposed to generate code as
  235. good as GCC while being considerably faster and smaller.  It comes with a
  236. demonstration VAX code generator and documentation on the code generation
  237. interfaces.  Production code generators for the VAX, MIPS, and Motorola
  238. 68020 are available for research use to universities willing to execute a
  239. license agreement; the FTP package elaborates.  Lcc uses a hard-coded C
  240. parser because it's faster than yacc.
  241.  
  242. * Where can I get a Fortran grammar in yacc?
  243.  
  244. I have a small subset parser in the archive mentioned above.  The F2C
  245. Fortran to C translator contains a full F77 parser and is available in
  246. source form via FTP from research.att.com and by mail from
  247. netlib@research.att.com.
  248.  
  249. * Where can I get Modula-2, Pascal or Ada grammars in yacc?
  250.  
  251. I have one each of those, too, in the archive mentioned above, though I
  252. haven't tried to use any of them.
  253.  
  254. * Where can I get a Cobol grammar in yacc?
  255.  
  256. Nowhere for free, as far as I can tell.  This question is asked every few
  257. months and there has never, ever, been any positive response. Perhaps some
  258. of the interested people could get together and write one.  The commercial
  259. PCYACC from Abraxas (see below) comes with a bunch of sample grammars
  260. including one for Cobol-85.
  261.  
  262. * Where can I get a Basic grammar in yacc?
  263.  
  264. Take a look at ftp.uu.net:comp.sources.unix/volume2/basic which contains
  265. a Basic interpreter with yacc parser.
  266.  
  267. * Are there free versions of yacc and lex ?
  268.  
  269. Vern Paxton's flex is a superior reimplementation of lex.  It is available
  270. from the same places as Gnu sources.  Berkeley Yacc is a quite compatible
  271. PD version of yacc by Bob Corbett, available as ~ftp/pub/byacc.tar.Z on
  272. okeeffe.berkeley.edu.  Gnu Bison is derived from an earlier version of
  273. Corbett's work and is also fairly compatible with yacc.
  274.  
  275. * Are there versions of yacc and lex for MS-DOS?
  276.  
  277. There are several of them.  Commercial versions are MKS lex&yacc from MKS
  278. in Waterloo Ont., +1 519 884 2251 or inquiry@mks.com, and PCYACC from
  279. Abraxas Software in Portland OR, +1 503 244 5253.  Both include both yacc
  280. and lex along with a lot of sample code.
  281.  
  282. The standard flex source compiles under the usual DOS compilers, although
  283. you may want to make some of the buffers smaller.  A DOS version of Bison
  284. is on wuarchive.wustl.edu [128.252.135.4] and other servers under
  285. /mirrors/msdos/txtutl/bison111.zip. See message 92-07-012 for more info.
  286.  
  287. * What other compilers and tools are freely available?
  288.  
  289. There is a two-part FAQ posting in comp.lang.misc, comp.sources.d,
  290. comp.archives.admin, and news.answers listing compiler tools freely
  291. available in source form, maintained by David Muir Sharnoff
  292. <muir@cogsci.berkeley.edu>.  It is posted once every three months.  If it's
  293. not on your system, you can FTP it from pit-manager.mit.edu in the
  294. directory /pub/usenet/news.answers/free-compilers, or via mail by sending a
  295. message to to mail-server@pit-manager.mit.edu with the command "send
  296. usenet/news.answers/free-compilers/*" in the text.
  297.  
  298. * How can I get started with yacc and lex and compiler writing in general?
  299.  
  300. By reading any of the many books on the topic.  Here are a few of them.
  301. Also see message 93-01-155 which reviews many compiler textbooks.
  302.  
  303. Aho, Sethi, and Ullman, "Compilers: Principles, Techniques, and Tools,"
  304. Addison Wesley, 1986, ISBN 0-201-10088-6, the "dragon book".  Describes
  305. clearly and completely lexing and parsing techniques including the ones in
  306. yacc and lex.  The authors work or have worked at Bell Labs with Steve
  307. Johnson and Mike Lesk, the authors of Yacc and Lex.
  308.  
  309. Alan Holub, "Compiler Design in C," Prentice-Hall, 1990, ISBN
  310. 0-13-155045-4.  A large book containing the complete source code to a
  311. reimplementation of yacc and lex and a C compiler.  Quite well written,
  312. too, though it has a lot of errors.  The fourth printing is supposed to
  313. correct most of them.
  314.  
  315. John R. Levine, Tony Mason, and Doug Brown, ``Lex & Yacc,'' 2nd Edition,
  316. O'Reilly and Associates, 1992, ISBN 1-56592-000-7, $29.95.  A concise
  317. introduction with completely worked out examples and an extensive
  318. reference section.  The new edition is completely revised from the earlier
  319. 1990 edition.
  320.  
  321. Donnely and Stallman, "The Bison Manual," part of the on-line distrubution
  322. of the FSF's Bison, a reimplementation of yacc.  As with everything else from
  323. the FSF, full source code is included.
  324.  
  325. Axel T. Schreiner and H. George Friedman, Jr., "Introduction to Compiler
  326. Construction with UNIX," Prentice-Hall, 1985.  Oriented to tutorial work.
  327. Good for beginners.  Develops a small subset-of-C compiler through the book.
  328. (Recommended by Eric Hughes <hughes@ocf.Berkeley.EDU>.)  Richard Hash
  329. <rgh@shell.com> comments that the book has many typographical errors, and
  330. readers should be suspicious of the examples until they actually try them.
  331. Richard Y. Kim <richard@ear.mit.edu> reports that sources are available for
  332. FTP as a.cs.uiuc.edu:pub/friedman/tar.
  333.  
  334. Bennett, J.P. "Introduction to Compiling Techniques - A First Course Using
  335. Ansi C, Lex and Yacc," McGraw Hill Book Co, 1990, ISBN 0-07-707215-4.
  336. It's intended for a first course in modern compiler techniques, is very
  337. clearly written, and has a full chapter on YACC.  I found it to be a good
  338. introductory text before getting into the 'Dragon book'.  (Recommended by
  339. John Merlin <J.H.Merlin@ecs.southampton.ac.uk>.)  Source code is available
  340. at ftp.bath.ac.uk.
  341.  
  342. Charles N. Fischer & Richard J. LeBlanc, "Crafting A Compiler", Benjamin
  343. Cummings Publishing, Menlo Park, CA, 1988, ISBN 0-8053-3201-4.  There's
  344. also a revised version as of 1990 or 1991 titled "Crafting A Compiler in
  345. C", with all examples in C (the original used ADA/CS).  Erich Nahum
  346. <nahum@cs.umass.edu> writes: A key compiler reference.  We used the
  347. original to great effect in Eliot Moss' graduate compiler construction
  348. class here at UMass.  My feeling is that Fischer & LeBlanc is a good
  349. tutorial, and one should use Aho, Sethi, & Ullman as a reference.
  350.  
  351. Des Watson, "High-Level Languages and Their Compilers," International
  352. Computer Science Series, Addison-Wesley Publishing Company, Wokingham
  353. England, 1989.  Adrian Howard <adrianh@cogs.sussex.ac.uk> writes: This is
  354. the kindest, most readable introduction to compilers at the graduate level
  355. I have ever read - an excellent example of what textbooks should all be
  356. like.
  357.  
  358. W.M. Waite and G. Goos, "Compiler Construction," Springer-Verlag, New
  359. York, 1984.  Dick Grune <dick@cs.vu.nl> writes: A theoretical approach to
  360. compiler construction. Refreshing in that it gives a completely new view
  361. of many subjects. Heavy reading, high information density.
  362.  
  363. J.P. Tremblay and P.G. Sorenson, "The Theory and Practice of Compiler
  364. Writing," McGraw-Hill, 1985.  Dick Grune <dick@cs.vu.nl> writes: Extensive
  365. and detailed. Heavy reading. To be consulted when other sources fail.
  366.  
  367. James E. Hendrix, "The Small-C Compiler", 2nd ed., M&T Books, ISBN
  368. 0-934375-88-7 <Book Alone>, 1-55851-007-9 <MS-DOS Disk>,
  369. 0-934375-97-6 <Book AND Disk>.
  370.  
  371. William Jhun <ec_ind03@oswego.edu> writes: It explaines the C-language is
  372. thorough....and explains every single aspect of the compiler. The book
  373. compares source code to p-code to assembly. It goes over a nice set of
  374. optimization routines, explains the parser, the back end, and even
  375. includes source code, which the compiler on the disk can actually compile
  376. itself. It's an extremely interesting book, check it out.
  377.  
  378. If anyone sends in others, I'll be happy to add them to the list.
  379.  
  380. * Where I can I FTP the sources to the programs in Holub's "Compiler
  381. Design in C" ?
  382.  
  383. You can't.  See page xvi of the Preface for ordering information.
  384.  
  385. Regards,
  386. John Levine, comp.compilers moderator
  387. -- 
  388. Send compilers articles to compilers@iecc.cambridge.ma.us or
  389. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  390.  
  391.  
  392. From compilers Mon Feb  1 07:00:20 EST 1993
  393. Newsgroups: comp.compilers
  394. Path: iecc!compilers-sender
  395. From: compilers-request@iecc.cambridge.ma.us (John R. Levine)
  396. Subject: Comp.compilers 1990 Annual
  397. Message-ID: <book-Feb-93@comp.compilers>
  398. Keywords: administrivia
  399. Sender: compilers-sender@iecc.cambridge.ma.us
  400. Supersedes: <book-Jan-93@comp.compilers>
  401. Organization: Compilers Central
  402. Date: Mon, 1 Feb 1993 12:00:15 GMT
  403. Approved: compilers@iecc.cambridge.ma.us
  404. Expires: Mon, 1 Mar 1993 23:59:00 GMT
  405.  
  406. NOTE: This is a monthly repost of the message about the printed version of
  407. the 1990 comp.compilers message.
  408.  
  409.             Comp.compilers 1990 Annual
  410.              Edited by John R. Levine
  411.  
  412. The Comp.compilers 1990 Annual is a printed edition of the messages posted
  413. to the usenet newsgroup comp.compilers in 1990.  Usenet is an informal
  414. distributed electronic bulletin board system connecting thousands of
  415. computers around the world.  Most of the systems attached to it run some
  416. version of Unix, though others systems ranging from MS-DOS personal
  417. computers to Cray mainframes now participate.  Comp.compilers is a
  418. moderated usenet news group addressing the topics of compilers in
  419. particular and programming language design and implementation in general.
  420. It started in 1986 as a moderated mailing list, but interest quickly grew
  421. to the point where it was promoted to a news group.  Recent topics have
  422. included optimization techniques, language design issues, announcements of
  423. new compiler tools, and book reviews.
  424.  
  425. Messages come from a wide variety of people ranging from undergraduate
  426. students to well-known experts in industry and academia.  Authors live all
  427. over the world - there are regular messages from the U.S, Canada, Europe,
  428. Australia, and Japan, with occasional ones from as far away as Malaysia.
  429. The anarchic nature of usenet makes it impossible to tell how large the
  430. readership is, but the total is probably in the tens of thousands.
  431.  
  432. The book's contents include 807 of the year's total 914 messages, leaving
  433. out only administrative messages and unanswered questions.  The messages
  434. themselves are unedited except for removing boilerplate header and trailer
  435. lines.
  436.  
  437. The book is 604 pages, each 11 x 8.5 inches with two pages of text side by
  438. side in reasonably legible 8 point type.  Messages are grouped by topic
  439. (C, optimization, book reviews, etc.) and within each topic messages in a
  440. thread are grouped together.  There is a permuted subject index, a keyword
  441. index, and an author index.  The book is GBC bound, a plastic spiral
  442. binding that lies flat.
  443.  
  444. Pricing
  445.  
  446. The price is $40 per book, plus $2 sales tax for copies delivered in
  447. Massachusetts, plus appropriate postage and packaging per copy:
  448.  
  449.   Pick up in Cambridge  free |  Foreign surface        $10
  450.   U.S. surface            $3 |  Foreign airmail:
  451.   U.S. priority           $5 |             Americas    $12
  452.   U.S. Federal Express   $20 |             Europe      $20
  453.   Canada              $7 |             All other   $30
  454.  
  455. No further discounts apply on single copies of the book, as this price is
  456. pre-discounted from the list price of $50.  Quantity discounts and
  457. shipping charges for large or unusual orders can be negotiated.
  458.  
  459. How to order
  460.  
  461. All orders must be prepaid.  Send a check payable to I.E.C.C. along with
  462. the delivery address.  We cannot take purchase orders, credit cards, or
  463. COD orders.  Foreign orders must be prepaid in U.S. dollars, preferably by
  464. a check on a U.S. bank, but anything our bank can handle is acceptable.
  465. (They charge $20 extra for foreign checks and $5 for incoming bank wires.)
  466.  
  467. The mailing address is:
  468.  
  469. I.E.C.C.
  470. P.O. Box 349
  471. Cambridge MA 02238-0349
  472.  
  473. The book is also available at list price from several bookstores.
  474. Being real bookstores, they take credit cards and the like.
  475.  
  476.     Computer Literacy Bookshop, 2590 N 1st St, San Jose CA 95131
  477.         +1 408 435 1118, orders@clbooks.com
  478.  
  479.     Quantum Books, 4 Cambridge Center, Cambridge MA 02141
  480.         +1 617 494 5042, quanbook@world.std.com
  481.  
  482. The book has ISBN 0-944954-02-2, and is under the imprint of Center Book
  483. Publishers, Inc.
  484. -- 
  485. Send compilers articles to compilers@iecc.cambridge.ma.us or
  486. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  487.  
  488.  
  489. From compilers Mon Feb  1 18:09:12 EST 1993
  490. Newsgroups: comp.compilers
  491. Path: iecc!compilers-sender
  492. From: Michael John Haertel <mike@skinner.cs.uoregon.edu>
  493. Subject: Thompson's 2c vs. gcc
  494. Message-ID: <93-02-003@comp.compilers>
  495. Keywords: architecture, GCC
  496. Sender: compilers-sender@iecc.cambridge.ma.us
  497. Reply-To: Michael John Haertel <mike@skinner.cs.uoregon.edu>
  498. Organization: Compilers Central
  499. References: <93-01-205@comp.compilers>
  500. Date: Fri, 29 Jan 1993 04:41:12 GMT
  501. Approved: compilers@iecc.cambridge.ma.us
  502.  
  503. Pardo wrote:
  504. >It is an amusing exercise to compare the listed md sizes for the Thompson
  505. >compiler to the GCC md sizes for the same machines.  I can't say whether
  506. >the code is comparable: Thompson claims the compile time is half that of
  507. >GCC and run time is 75% that of GCC, but it shows only slightly better run
  508. >times than lcc, and a previous comp.compilers article said lcc was
  509. >substantially worse than GCC.
  510.  
  511. I've used 2c.  My experience is that gcc produces better code, contrary to
  512. Thompson's claim.  He most likely forgot to turn on -O with gcc.  Without
  513. -O, gcc produces really pessimal code, considerably slower than pcc
  514. without -O for example.
  515.  
  516. The gcc source code (currently ~200,000 lines for the machine independent
  517. part only, not counting the C++ and ObjC front ends) is more than 10 times
  518. the size of the 2c source code.  I would not say that gcc produces 10
  519. times better code.  Perhaps 10% better.  This may be another case of 90%
  520. of the benefit for 10% of the work.  In addition, 2c compiles much faster.
  521. Thompson's claim that 2c typically compiles in 50% of the time gcc takes
  522. is probably an understatement, in fact.  2c is the most nearly I/O-bound
  523. compiler I've ever used.
  524. -- 
  525. Send compilers articles to compilers@iecc.cambridge.ma.us or
  526. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  527.  
  528.  
  529. From compilers Mon Feb  1 18:11:17 EST 1993
  530. Newsgroups: comp.compilers
  531. Path: iecc!compilers-sender
  532. From: bart@cs.uoregon.edu (Barton Christopher Massey)
  533. Subject: Re: justify use of flex vs lex
  534. Message-ID: <93-02-004@comp.compilers>
  535. Keywords: lex
  536. Sender: compilers-sender@iecc.cambridge.ma.us
  537. Reply-To: bart@cs.uoregon.edu (Barton Christopher Massey)
  538. Organization: University of Oregon Computer and Information Sciences Dept.
  539. References: <93-01-178@comp.compilers>
  540. Date: Fri, 29 Jan 1993 07:39:23 GMT
  541. Approved: compilers@iecc.cambridge.ma.us
  542.  
  543. swl26@cas.org (Steve Layten x3451) writes:
  544. [Why flex not lex?]
  545. >    Support across multiple platforms/environments
  546. >    Fewer constraints or "limits" built in.
  547. >    I believe that support for flex is "better" than most vendors
  548.  
  549. And, if it matters, don't forget speed -- flex scanners may be
  550. comparable to hand-coded ones in speed, whereas lex scanners aren't
  551. even in the running...
  552.  
  553.                     Bart Massey
  554.                     bart@cs.uoregon.edu
  555. -- 
  556. Send compilers articles to compilers@iecc.cambridge.ma.us or
  557. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  558.  
  559.  
  560. From compilers Mon Feb  1 18:13:35 EST 1993
  561. Newsgroups: comp.compilers
  562. Path: iecc!compilers-sender
  563. From: thutt <thutt@MAIL.CASI.NASA.GOV>
  564. Subject: EBNF Parser generator information (RRPG reply)
  565. Message-ID: <93-02-005@comp.compilers>
  566. Keywords: parse, tools
  567. Sender: compilers-sender@iecc.cambridge.ma.us
  568. Reply-To: thutt <thutt@MAIL.CASI.NASA.GOV>
  569. Organization: Compilers Central
  570. References: <93-01-206@comp.compilers>
  571. Date: Fri, 29 Jan 1993 12:35:43 GMT
  572. Approved: compilers@iecc.cambridge.ma.us
  573.  
  574. > Regular right-part grammars (RRPGs) are a kind of phrase structure grammar
  575. > akin to context-free grammars (CFGs).  In each production of an RRPG, the
  576. > ...
  577. > There are various notations for writing RRPGs (or slight restrictions
  578. > thereof), many called "extended BNF".
  579. > What parser-generators are available that accept some form of RRPG?
  580.  
  581. The LALR program from ProSoft (formerly LALR Research) is the fastest, and
  582. best parser generator used.  It accepts EBNF as its input, and produces
  583. fantastically fast parsers.  It automatically creates an AST for you, and
  584. actually traverses it, calling your semantic action functions associated
  585. with that type of tree node.
  586.  
  587. I don't have my docs handy, and its been quite a long time since I have
  588. actually used it, but it accepts the entire EBNF syntax.  Really an
  589. incredible parser generator.
  590.  
  591. It comes free with a YACC->LALR translator, and a program that will allow
  592. you to visually see how your productions are working.  (It's an
  593. interactive program that shows you each production in a menu, you
  594. selection a production, and it pops up a new window with all the new
  595. productions that are available.  Really neat.  Good for understanding how
  596. these type of parsers actually operate.)
  597.  
  598. And, its a hell of a lot easier to use than YACC!  On the downside, the
  599. documentation is rather skimpy (don't know about today.  I bought mine in
  600. 1989), BUT all the information you need _is_ in the documentation.  You
  601. just have to read it, over and over.  Read the code, experiment.  It will
  602. not hit you over the head with blatant info, but you can figure things out
  603. every single time!
  604.  
  605. I have no association with this company.  I'm just a convert to his
  606. program.  Plus, he's a real nice guy to boot!
  607.  
  608. Taylor Hutt
  609. thutt@mail.casi.nasa.gov
  610. -- 
  611. Send compilers articles to compilers@iecc.cambridge.ma.us or
  612. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  613.  
  614.  
  615. From compilers Mon Feb  1 18:14:37 EST 1993
  616. Xref: iecc comp.compilers:4176 comp.lang.fortran:8917
  617. Newsgroups: comp.compilers,comp.lang.fortran
  618. Path: iecc!compilers-sender
  619. From: steve@hubcap.clemson.edu ("Steve" Stevenson)
  620. Subject: Re: Wanted: folk theorems in Fortran Programming.
  621. Message-ID: <93-02-006@comp.compilers>
  622. Keywords: Fortran, optimize
  623. Sender: compilers-sender@iecc.cambridge.ma.us
  624. Reply-To: steve@hubcap.clemson.edu ("Steve" Stevenson)
  625. Organization: Clemson University
  626. References: <93-01-193@comp.compilers> <93-01-213@comp.compilers>
  627. Date: Fri, 29 Jan 1993 14:30:29 GMT
  628. Approved: compilers@iecc.cambridge.ma.us
  629.  
  630. davidm@questor.rational.com (David Moore) writes:
  631. >[re folk Fortran wisdom]
  632. >The point is that any decent optimizing compiler is going to recognize all
  633. >of these "bad" forms and convert them into something better.
  634.  
  635. The point is that the left and right hand columns are from a current
  636. teaching module from NCSA. Compilers and compiler people do not
  637. necessarily get through to the people who are actually coding. The reason
  638. to look for this stuff is to find out what people are being told.
  639. --
  640. Steve (really "D. E.") Stevenson           steve@hubcap.clemson.edu
  641. Department of Computer Science,            (803)656-5880.mabell
  642. Clemson University, Clemson, SC 29634-1906
  643. -- 
  644. Send compilers articles to compilers@iecc.cambridge.ma.us or
  645. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  646.  
  647.  
  648. From compilers Mon Feb  1 18:17:54 EST 1993
  649. Newsgroups: comp.compilers
  650. Path: iecc!compilers-sender
  651. From: jan@klikspaan.si.hhs.nl
  652. Subject: Re: Recursive descent is better than LL(1)
  653. Message-ID: <93-02-007@comp.compilers>
  654. Keywords: LL(1), parse
  655. Sender: compilers-sender@iecc.cambridge.ma.us
  656. Reply-To: jan@klikspaan.si.hhs.nl
  657. Organization: Compilers Central
  658. References: <93-01-122@comp.compilers> <93-01-204@comp.compilers>
  659. Date: Fri, 29 Jan 1993 16:20:11 GMT
  660. Approved: compilers@iecc.cambridge.ma.us
  661.  
  662. Barton Christopher Massey <bart@cs.uoregon.edu> writes:
  663. >I would like to prove or disprove the following conjectures:
  664. > LL(1) Transformability: There exists an algorithm which, given any grammar G
  665. > which is unambiguous and describes an LL(1) language L(G), produces an LL(1)
  666. > grammar G' for the language L(G).
  667. > LL(1) Decidability: There exists an algorithm which, given any grammar G
  668. > which is unambiguous and describes a language L(G), decides whether L(G) is
  669. > an LL(1) language.
  670. >it seems most likely to me that LL1T is true, but I'm skeptical about LL1D.
  671.  
  672. Bill Purvis <W.Purvis@daresbury.ac.uk> writes:
  673. >... SID... accepts a fairly arbitrary BNF description... produce an LL(1)
  674. >grammar (assuming that the language is LL(1). - the first conjecture.
  675. >...I suspect that in practical terms it probably covers the second conjecture.
  676. jan@klikspaan.si.hhs.nl writes:
  677. >I present a simple contra-example:
  678. >    S -> A | B
  679. >    A -> `x' A `y' | `a'
  680. >    B -> `x' B `z' | `b'
  681. >...`SID may also report failure because
  682. >its attempt to transform the grammar causes it to loop.'
  683.  
  684. Pete Jinks <pjj@cs.man.ac.uk> writes:
  685. > Jan's example causes SID problems, so SID may establish LL1T but can't
  686. > establish LL1D. I believe this is because his example is not LL(1), but
  687. > no-one has said so explicitly so far and I can't find the example in the
  688. > Dragon book - is it a well-known example?
  689.  
  690. I'm teaching compiler construction on the school mentioned below.  I have
  691. been doing some spare time tinkering on the problem of transforming a
  692. grammar to LL(1) form along the lines advocated by the `dragon book'.
  693. That means it's done the same way as Foster's SID.  There are some
  694. differences though. My program accepts a `simple syntax directed
  695. translation scheme' in the form of a `regular right part grammar'. The
  696. translation scheme is expected to specify translation to postfixcode that
  697. could easily be converted to an abstract syntax tree if you like.  The
  698. reason for this approach is that the transformation process messes up any
  699. carefully designed grammar. The resultant abstract syntax trees however
  700. remain invariant in the transformation process. So you can neglect the
  701. messed up grammar. Any further translation can be defined in terms of an
  702. attribute grammar for the resultant postfix code or equivalently the
  703. abstract syntax trees.
  704.  
  705. I tested it mainly with two grammars: one derived from the Pascal-grammar
  706. in `Jensen & Wirth - Pascal: User Manual and Report', the other derived
  707. from James Roskind's YACC-grammar for C. On Pascal my program did a
  708. marvelous job. On the Roskind-C grammar it runs into an infinite loop. (I
  709. wasn't aware of the problem at the time.) So figuring out wat went wrong I
  710. designed some small examples running into the same problem.
  711.  
  712. The problem is of course the restricted set of transformations used. After
  713. elimination of direct and indirect recursion only two transformations
  714. remain:
  715. - substitution of leading nonterminals in rules with conflicting FIRST-sets.
  716. - factorization of common prefixes of rules.
  717.  
  718. Even simpler grammars might get SID and my program into a loop when we
  719. restrict ourselves to these transformations:
  720.  
  721. Example:
  722. S -> A | B
  723. A -> `x' A | `a'
  724. B -> `x' B | `b'
  725.  
  726. Substituting A and B in the S rules and factorizing gives:
  727.  
  728. S -> `x' S1 | `a' | `b'
  729. S1 -> A | B
  730. A -> `x' A | `a'
  731. B -> `x' B | `b'
  732.  
  733. So you run into the same loop.
  734.  
  735. Noting the rules of S1 match the original rules for S you might substitute
  736. the name S for S1 to get:
  737.  
  738. S -> `x' S | `a' | `b'
  739.  
  740. That's a different transformation however! At least Foster doesn't mention
  741. it, nor does the dragon book.
  742.  
  743. This transformation can be used sometimes. It works also on the next example:
  744.  
  745. S -> A | B
  746. A -> `x' A `y' | `a'
  747. B -> `x' B `y' | `b'
  748.  
  749. It doesn't work however on the contra-example from my previous posting:
  750.  
  751. S -> A | B
  752. A -> `x' A `y' | `a'
  753. B -> `x' B `z' | `b'
  754.  
  755. I chose this example in my previous posting while the other examples
  756. couldn't disproof any of the conjectures. However it's no LL(1) language.
  757.  
  758. In fact the conjectures have not been disproved at all. Only if we
  759. restrict our transformations to the set mentioned by Foster. I don't
  760. expect the suggested transformation above solves the looping problem in
  761. the general case for LL(1) languages, but I don't have any contra example.
  762.  
  763. The wider approach to recusive descent parsing as exposed in my previous
  764. posting handles all the examples above. So why bother to much with strict
  765. LL(1) languages. It's simple: anything that can be done with a table
  766. driven LL(1) parser can also be done with a recursive descent parser.  But
  767. the converse is not true. Recursive descent can do much more than just
  768. handling LL(1) languages.
  769.  
  770. Let's wind up this discussion:
  771.  
  772. Returning to Massey's second conjecture:
  773.  
  774. > LL(1) Decidability: There exists an algorithm which, given any grammar G
  775. > which is unambiguous and describes a language L(G), decides whether L(G) is
  776. > an LL(1) language.
  777.  
  778. LL(1) languages are only very weakly defined as languages for which an
  779. LL(1) grammar exists. There's no description of an LL(1) language without
  780. reference to an LL(1) grammar. `Dragon book' states, it after showing how
  781. the table of a table driven parser is constructed, as `A grammar whose
  782. parsing table has no multiply-defied entries is said to be LL(1).'.
  783.  
  784. So if you are lucky your search for an LL(1) grammar may succeed.
  785.  
  786. But how about proving a language defined by an arbitrary grammar is not
  787. LL(1). Do we have to search an infinite universe of equivalent grammars?
  788. After all we don't have any better characterization of being NOT LL(1)
  789. than `there's no grammar for this language in our infinite universe of
  790. equivalent grammars . . . etc.'  This tends to an infinite loop. We need a
  791. better characterization of being LL(1).
  792.  
  793. Popping our discussion stack again. What do we prefer? Education with
  794. top-down or bottom-up techniques?
  795.  
  796. I present a bit of recursive descent parsing in a very early stage as part
  797. of a course in datastructures and algorithms. This follows the course on
  798. ordinairy Pascal and starts with pointers and recursion.  I use
  799. elementairy recursive descent technique based on syntax-diagrams as a
  800. means to point out that recursion is'nt meant for stupid examples like
  801. factorial functions, but instead a very powerfull programming technique.
  802. As an exercise students have to read propositional expressions with
  803. operators and or not <=> => parantheses and a few variables, have to
  804. convert the expressions to abstract syntaxtrees, interprete the trees and
  805. print a corresponding truth-table. Just to let them taste it.
  806.  
  807. In a later stage my collegues give seperate courses on the theory of
  808. grammars, languages regular expressions etc. and on the usage of LEX and
  809. YACC. Next a short course on theory of compiler construction containing
  810. LL(1) and SLR(1) table construction, among other things.  We end with a
  811. practical assigment on building a translator with LEX and YACC for a
  812. simplified version of Pascal (just integers and booleans, no type
  813. constructions).
  814.  
  815. Concerning the choice between top-down and bottom-up my advice is: Take a
  816. look at the language first. What did the inventors of the language have in
  817. mind? Don't tell me they had no idea while defining the language.
  818.  
  819. Jan Schramp
  820.  
  821. --
  822. Jan Schramp, Haagse Hogeschool - Sector Informatica. Louis Couperusplein 19,
  823. 2514 HP  Den Haag, Netherlands. E-mail: jan@si.hhs.nl
  824. -- 
  825. Send compilers articles to compilers@iecc.cambridge.ma.us or
  826. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  827.  
  828.  
  829. From compilers Mon Feb  1 18:19:56 EST 1993
  830. Xref: iecc comp.compilers:4178 comp.lang.fortran:8918
  831. Newsgroups: comp.compilers,comp.lang.fortran
  832. Path: iecc!compilers-sender
  833. From: wand@dec5120z.ccs.northeastern.edu (Mitchell Wand)
  834. Subject: Re: Wanted: folk theorems in Fortran Programming.
  835. Message-ID: <93-02-008@comp.compilers>
  836. Keywords: Fortran, arithmetic
  837. Sender: compilers-sender@iecc.cambridge.ma.us
  838. Reply-To: wand@dec5120z.ccs.northeastern.edu (Mitchell Wand)
  839. Organization: College of Computer Science, Northeastern University
  840. References: <93-01-193@comp.compilers> <93-01-208@comp.compilers>
  841. Date: Fri, 29 Jan 1993 17:01:58 GMT
  842. Approved: compilers@iecc.cambridge.ma.us
  843.  
  844. > steve@hubcap.clemson.edu ("Steve" Stevenson) writes:
  845. >I am trying to make a catalog of folk wisdom in fortran programming.
  846.  
  847. You might also want to look at
  848.  
  849. David Goldberg,
  850. "What Every Computer Scientist Should Know about Floating-Point Arithmetic"
  851. Computing Surveys, March 1991, 5--49.
  852.  
  853. It's not Fortran-specific, but Steve's examples suggested a particular
  854. interest in numerical coding.
  855.  
  856. --Mitch
  857.  
  858. --
  859. Mitchell Wand
  860. College of Computer Science, Northeastern University
  861. 360 Huntington Avenue #161CN, Boston, MA 02115     Phone: (617) 437 2072
  862. Internet: wand@ccs.northeastern.edu                Fax:   (617) 437 5121
  863. -- 
  864. Send compilers articles to compilers@iecc.cambridge.ma.us or
  865. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  866.  
  867.  
  868. From compilers Mon Feb  1 18:21:17 EST 1993
  869. Newsgroups: comp.compilers
  870. Path: iecc!compilers-sender
  871. From: parrt@ecn.purdue.edu (Terence J Parr)
  872. Subject: Re: parser-generators for RRPGs
  873. Message-ID: <93-02-009@comp.compilers>
  874. Keywords: parse, tools
  875. Sender: compilers-sender@iecc.cambridge.ma.us
  876. Reply-To: parrt@ecn.purdue.edu (Terence J Parr)
  877. Organization: Compilers Central
  878. References: <93-01-206@comp.compilers>
  879. Date: Fri, 29 Jan 1993 17:55:40 GMT
  880. Approved: compilers@iecc.cambridge.ma.us
  881.  
  882. Michael Dyck <dyck@cs.sfu.ca> writes:
  883.  
  884. > if-statement = "IF" condition "THEN" statements
  885. >                { "ELSIF" condition "THEN" statements }
  886. >                [ "ELSE" statements ]
  887. >                "END"
  888. >
  889. > It seems like most grammars presented for human consumption are RRPGs, but
  890. > most grammars presented for machine consumption are CFGs.  What
  891. > parser-generators are available that accept some form of RRPG?
  892.  
  893. ANTLR, the parser generator in PCCTS (Purdue Compiler Construction Tool
  894. Set), supports the following EBNF constructs:
  895.  
  896. Make a subrule:
  897.      ( alternative 1 | alternative 2 | ... | alternative n )
  898.  
  899. Make an optional subrule:
  900.      { alternative 1 | alternative 2 | ... | alternative n }
  901.  
  902. Make a zero-or-more looping subrule:
  903.      ( alternative 1 | alternative 2 | ... | alternative n )*
  904.  
  905. Make a one-or-more looping subrule:
  906.      ( alternative 1 | alternative 2 | ... | alternative n )+
  907.  
  908. Subrules are treated like ordinary grammar symbols and hence can be nested
  909. arbitrarily.
  910.  
  911. In a related subject, the next release, 1.07, will allow arbitrary regular
  912. expressions of tokens to be used to predict many productions which require
  913. arbitrary lookahead.  e.g.  (...)+ loops as prefixes tend to cause
  914. problems:
  915.  
  916. a : (A)* X
  917.   | (A|B)* Y
  918.   ;
  919.  
  920. This is a major problem for LL-based parsers (assuming one cannot left
  921. factor).  However, using the semantic predicate mechanism also supported
  922. by PCCTS, one can do the following:
  923.  
  924. a : << predict(A* X) >>?        (A)* X
  925.   | << predict([AB]* Y) >>?     (A|B)* Y
  926.   ;
  927.  
  928. PCCTS constructs a DFA for each parsing decision which has these predict
  929. "functions".  Then, at runtime, the DFA spins until it matches (or doesn't
  930. match) one of the predicting regular expressions.  Upon a successful
  931. match, it knows which production to predict.  NOTE that it is a predicting
  932. regular expression of TOKENS not characters.  There's lots of theory and
  933. stuff behind the power and usefulness of this technique which I'll leave
  934. out.  This feature works in my 1.07 alpha version (in house).
  935.  
  936. > [I've seen occasional references to something called eyacc, which appeared
  937. > to be an EBNF version of yacc.  Is it not the case that RRPGs can be
  938. > mechanically translated to CFGs, in which case a preprocessor for a normal
  939. > parser generator might make sense? -John]
  940.  
  941. Actually, for recursive-descent parser generators like ANTLR, the (...)*
  942. looping constructs etc... are best left in that form rather than
  943. converting to BNF (although this is easy to do and I built one with
  944. PCCTS).  For example,
  945.  
  946. a : WORD ( COMMA WORD )*
  947.   ;
  948.  
  949. would be mapped to something like:
  950.  
  951. a()
  952. {
  953.     MATCH(WORD);
  954.     while ( LA(1)==COMMA ) {
  955.         MATCH(COMMA);
  956.         MATCH(WORD);
  957.     }
  958. }
  959.  
  960. where LA(1) is the next token of lookahead.  This is much more efficient
  961. than performing tail (LL) or left recursion (LR).
  962.  
  963. Terence
  964. -- 
  965. Send compilers articles to compilers@iecc.cambridge.ma.us or
  966. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  967.  
  968.  
  969. From compilers Mon Feb  1 18:22:06 EST 1993
  970. Newsgroups: comp.compilers
  971. Path: iecc!compilers-sender
  972. From: ramki@cs.du.edu (Ramki Thurimella)
  973. Subject: Automatic Transformation of CFG to LL/LR
  974. Message-ID: <93-02-010@comp.compilers>
  975. Keywords: LL(1), parse
  976. Sender: compilers-sender@iecc.cambridge.ma.us
  977. Reply-To: ramki@cs.du.edu (Ramki Thurimella)
  978. Organization: Compilers Central
  979. References: <93-01-122@comp.compilers> <93-01-204@comp.compilers>
  980. Date: Fri, 29 Jan 1993 18:13:15 GMT
  981. Approved: compilers@iecc.cambridge.ma.us
  982.  
  983.  
  984. I remember seeing recently a posting on this newsgroup requesting
  985. pointers to the following question: given an arbitrary context-free
  986. grammar, does there exist a program/tool that would automatically
  987. convert it to LL(1) or LR(1) grammar.
  988.  
  989. While testing to see if a given CFG is LL(1) or LR(1) simple and
  990. decidable, converting one is undecidable. Exercises 5.1.12 and 5.2.12 of
  991.  
  992.      Aho, A.V. and Ullman, J.D., "The Theory of Parsing, Translation,
  993.      and Compiling," Vol. 1: Parsing, Prentice-Hall, Englewood Cliffs,
  994.      N.J., 1972.
  995.  
  996. raise the same issues as that of the previous posting.
  997.  
  998. Ramki Thurimella
  999. -- 
  1000. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1001. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1002.  
  1003.  
  1004. From compilers Mon Feb  1 18:24:19 EST 1993
  1005. Newsgroups: comp.compilers
  1006. Path: iecc!compilers-sender
  1007. From: davids@ICSI.Berkeley.EDU (David Petrie Stoutamire)
  1008. Subject: GCC as back-end summary
  1009. Message-ID: <93-02-011@comp.compilers>
  1010. Keywords: GCC
  1011. Sender: compilers-sender@iecc.cambridge.ma.us
  1012. Reply-To: davids@ICSI.Berkeley.EDU (David Petrie Stoutamire)
  1013. Organization: International Computer Science Institute, Berkeley, CA, U.S.A.
  1014. Date: Fri, 29 Jan 1993 19:41:05 GMT
  1015. Approved: compilers@iecc.cambridge.ma.us
  1016.  
  1017. This is a summary of responses to my query about using gcc as a
  1018. back-end for our new Sather compiler.  Eight other people responded
  1019. asking to be forwarded any info, so I'm posting this.  These messages
  1020. are trimmed a bit.
  1021.  
  1022.     - Dave
  1023.  
  1024.     We are about to write the compiler for the next release of Sather.  Our
  1025.     previous compiler (written for the most part in Sather) used Yacc and Lex,
  1026.     did some Sather processing, and output in C as a sort of portable
  1027.     assembly.
  1028.  
  1029.     Most of the compiling time is currently spent compiling the resultant C
  1030.     code.  Naturally, we are thinking about using RTL as an intermediate form
  1031.     to hand to gcc.  This would result in a much faster compiler that would be
  1032.     nearly as portable, although we would still have to be able to generate C
  1033.     in order to let people bootstrap Sather.
  1034.  
  1035.     RTL (from the gcc manual) isn't too bad, but removing the C-specific part
  1036.     of gcc and linking in our code looks like it would require a lot of
  1037.     knowledge of gcc.  The new versions of the compiler look much cleaner than
  1038.     before, but we would rather be spending time on language issues than
  1039.     mucking with the code.
  1040.  
  1041.     I would love to hear from anyone who has used gcc as a back-end, or
  1042.     pointers to other attempts to do so.  Ideal would be a stripped down
  1043.     version which read RTL instead of C files.  I imagine such a thing would
  1044.     be very useful to others as well.
  1045.  
  1046.     I will appreciate any help... thanks!
  1047. -----------------------------------------------------------------
  1048. >From comp.compilers moderator:
  1049. [The GNU Fortran project must have faced a similar problem.  It's headed up
  1050. by Craig Burley <burley@apple-gunkies.gnu.ai.mit.edu>. -John]
  1051. -----------------------------------------------------------------
  1052. >From matthes@src.dec.com Wed Jan 20 13:15:35 1993
  1053.  
  1054. Our group at Hamburg University, Germany, also uses C as a "portable"
  1055. target assembly language for the compilation of a higher-order persistent
  1056. language.  Based on our previous experience in generating code for the
  1057. commercial Sun optimizing compiler back end shared by their C, C++,
  1058. Modula-2, Pascal and Fortran compiler, we decided to stay away from
  1059. intermediate representations a la RTL.
  1060.  
  1061. Nevertheless, I would be very interested to learn more about the
  1062. experience of other groups in this field. Perhaps there has been some
  1063. progress to truely decouple the frontends from the bits and bytes of the
  1064. IR. I would therefore appreciate if you could forward (a summary of) the
  1065. information you receive.
  1066. -----------------------------------------------------------------
  1067. >From jcook@goober.cs.colorado.edu Wed Jan 20 13:27:23 1993
  1068.  
  1069. I tried exactly what you're describing back in '89, when I was taking a
  1070. compilers class. I spent spring break (all of it) trying to separate the
  1071. RTL back end, and ended up failing - the linking dependencies killed it. I
  1072. then did my own RTL'ish intermediate language and the back-end to 68000
  1073. code, but it kept me from having the time to add more functionality to the
  1074. front end.
  1075.  
  1076. I think having the RTL translator available separately would be great, and
  1077. am surprised no-one has done it yet. Best of luck :-).
  1078. -----------------------------------------------------------------
  1079. >From bondp@source.asset.com Thu Jan 21 07:06:41 1993
  1080.  
  1081. I think is is exactly what the GNU ADA (GNAT) project is doing.  Check
  1082. with Ed Schonberg (schonber@SCHONBERG.CS.NYU.EDU) for more information.
  1083. -----------------------------------------------------------------
  1084. >From perle@cs.tu-berlin.de Thu Jan 21 10:53:48 1993
  1085.  
  1086. We are investigating the same thing for the (locally developed)
  1087. applicative programming language OPAL, the main aspect of whose back - or
  1088. rather middle - end is compile time optimization of garbage collection.
  1089.  
  1090. The current solution is, as you did, to generate C source code to be
  1091. further handled by the Gnu C Compiler. And of course, to skip the step of
  1092. flattening an abstract tree to text form and then having it parsed again
  1093. should be a significant speedup.
  1094.  
  1095. A group of of three students, including me, was assigned the task of
  1096. finding, analyzing and reporting possible interfacing methods.
  1097.  
  1098. This is what we found out so far:
  1099.  
  1100. At the initial moment of their generation during the parsing process (i.e.
  1101. before further optimizations take place), RTL expressions are restricted
  1102. to machine specific formulations of the intended semantic action. For
  1103. example, the code generated for the SPARC architecture for loading an
  1104. immediate value of sufficient size (= not fitting in a single opcode) into
  1105. a (at that time, virtual) register will consist of code for loading the
  1106. more significant bits and then adding the rest, because this is the way
  1107. the SPARC will do it.
  1108.  
  1109. So, generating your own RTL expressions would mean to implement all those
  1110. machine specific decisions, unless you make use of gcc's RTL generating
  1111. functions. These get adapted to the machine dependent needs at the time of
  1112. compiling gcc itself. Most of them, unfortunately, do expect appropriate
  1113. variants of gcc's tree data structure to be guided in what functionality
  1114. to generate.  Gcc constructs partial syntax trees per top level definition
  1115. (e.g. function) from the sourcecode, then generates RTL code from it and
  1116. discards the tree.  It seems there is no routine included for reading in
  1117. either RTL or trees.
  1118.  
  1119. Luckily, as far as we can tell gcc accesses the tree objects only via some
  1120. #define macros from tree.h . Therefore, it should be possible to construct
  1121. a new tree.h which makes gcc believe that our own abstract "imperative
  1122. code" tree is just what it expects. Of course, this would also require to
  1123. appropriately link the executables together, including control flow.
  1124. Also, the implications of gcc's destructive access to otherwise
  1125. functionally clean data structures must be considered. If we have to copy
  1126. them to avoid problems, we could even adapt them to the expected form.
  1127.  
  1128. The effort to implement this scheme should not be underestimated.
  1129.  
  1130. There are quite many possibilities to draw the border line. A clean and
  1131. easy solution would be to define a functional datatype which resembles the
  1132. tree structure logically (maybe leaving out relative obscurities like the
  1133. ++ operation etc.), and write a new .y grammar description file for gcc
  1134. which parses a simple prefix notation of the tree, which can be easily
  1135. output from the functional parser back end. The parsing function could
  1136. (later on?) be hand coded to avoid large tables.
  1137.  
  1138. One could even try to translate the RTL generating functions from C to the
  1139. functional language of your choice - either manually, or better yet
  1140. automatically.
  1141.  
  1142. Any way, a thorough investigation of struct tree, or rather its macro
  1143. interface and an exact documentation of what we found should be the next
  1144. thing to do.
  1145.  
  1146. It is not sure whether our project will be continued to reach any
  1147. implemenation, for the prospectable amount of work which is required
  1148. exceeds the limitations of the course this project is part of.
  1149. -----------------------------------------------------------------
  1150. >From thiemann@informatik.uni-tuebingen.de Fri Jan 22 01:54:28 1993
  1151.  
  1152. try to contact J"orn von Holten aka <aspect@sun1d.informatik.Uni-Bremen.DE>.
  1153. They are implementing a strict functional language named aspect, have been
  1154. generating C code and are switching to using RTL, as I'm told.
  1155. -----------------------------------------------------------------
  1156. >From moss@CRAFTY.FOX.CS.CMU.EDU Fri Jan 22 07:43:57 1993
  1157.  
  1158. You can try to GNU Ada people at NYU. One contact is Professor Ed
  1159. Schonberg (schonber@cs.nyu.edu (note spelling of user id!)). They have an
  1160. Ada front end that output RTL to the gcc back end. I lead the GNU Modula-3
  1161. project, which wrote a new front-end, but it's more "in bed" with gcc's
  1162. way of doing things.
  1163. -----------------------------------------------------------------
  1164.     This is a message sent to our internal Sather group which is related,
  1165.     so I'm including it in the summary (we have garbage collection in
  1166.     Sather).
  1167.  
  1168. >From CRAFTY.FOX.CS.CMU.EDU!moss Fri Jan 22 20:38:22 1993
  1169.  
  1170. Thanks for your inquiry concerning our gc enhancements. I don't have a lot
  1171. of time at the moment, but I should be able to give you the general
  1172. picture.
  1173.  
  1174. One of my students, Amer Diwan, enhanced the gcc back-end to keep track of
  1175. pointers, address arithmetic optimizations, etc., and to output tables to
  1176. support gc. The idea is that for selected execution points where gc can
  1177. occur (e.g., at calls, allocations, etc., but, to keep table size down,
  1178. etc., NOT at every instruction) the table allows one to determine which
  1179. registers have live pointers to objects, and which stack locations in the
  1180. current frame. By using the return pc values into previous frames, we can
  1181. probe the table for other frames, and reconstruct the contents of
  1182. registers, and thus "decode" the entire stack.
  1183.  
  1184. Additionally, one may have what we call "derived values", which are based
  1185. on either pointers to (the starts of) objects or other derived values. To
  1186. perform a gc, one "subtracts off" the values from which a derived value is
  1187. derived, does the gc (possibly moving objects), and then "adds back" the
  1188. values back into the derived value, thus adjusting it. This works for
  1189. derived values that are the sum or difference of one or more pointers,
  1190. plus any additional offset (the offset need not be a constant). The
  1191. derived value stuff handles strength reduction topimizations (which
  1192. produce pointers that step through arrays), and a variety of other
  1193. optimizations that result in derived values that do NOT point anywhere
  1194. into the object(s) to which they are connected. We also guarantee the base
  1195. pointers are still live and available for this computation at the gc
  1196. points, etc. Finally, the scheme does significant compression on the
  1197. tables. This is all reported in our paper presented at SIGPLAN '92, which
  1198. you can obtain via anonymous ftp from ibis.cs.umass.edu (look in
  1199. ~pub/papers for interesting stuff).
  1200.  
  1201. There are two other things needed to support gc. One is a way of informing
  1202. the collector of stores of pointers. This is needed because the collector
  1203. is generational, and need to know about new pointers from old generations
  1204. into younger ones. The compiler has support for a number of schemes for
  1205. doing that, selectable by command line options.  Finally, one needs the
  1206. actual colelctor and the stack decoding run time. Both of these have been
  1207. built. The collector we use is the UMass Language Independent GC Toolkit.
  1208. There is a technical report describing an earlier version of this
  1209. collector in the aforementioned pub/papers directory. We can make the
  1210. toolkit available for research use only; commercial use may require
  1211. licensing. The directly gcc related stuff will be offered back to the FSF,
  1212. though we have not handed it out yet, since GNU M3 is not even into the
  1213. alpha release stage (though that is only a matter of weeks now).
  1214. -----------------------------------------------------------------
  1215. >From hudson@yough.ucc.umass.edu Fri Jan 22 16:14:33 1993
  1216.  
  1217. I think it might be worth measuring how much time is actually spent in
  1218. these routines. Optimizing takes up a lot of time and the gcc front end is
  1219. designed to be pretty fast (at the expense of being 1 pass). You might end
  1220. up with less speedup that you anticipate.
  1221.  
  1222. > RTL (from the gcc manual) isn't too bad, but removing the C-specific part
  1223. > of gcc and linking in our code looks like it would require a lot of
  1224. > knowledge of gcc.  The new versions of the compiler look much cleaner than
  1225. > before, but we would rather be spending time on language issues than
  1226. > mucking with the code.
  1227.  
  1228. The dream of us all, but the reality of getting a Modula-3 compiler that
  1229. produces quality code has forced us to redo the frontend of gcc and add to
  1230. the backend.  We changed the front end to build a parse tree using an
  1231. enhanced version of the tree.h nodes. From there we type checked and
  1232. generated rtl that included the type information we needed and off we
  1233. went. Going to our internal parse tree nodes might be a another approach
  1234. since it buys into some of our backend type work with greater ease.  The
  1235. down side of our approach is that we ended up hacking in C instead of
  1236. Modula-3 (or Sather).  To understand some of the work we did see
  1237.  
  1238. @InProceedings{DMH91,
  1239.   author =      "Amer Diwan and J. Eliot B. Moss and Richard L. Hudson",
  1240.   title =      "Compiler Support for Garbage Collection in a Statically
  1241.   Typed Language",
  1242.   pages =      "273--282",
  1243.   booktitle = "Conference on Programming Language Design and Implementation",
  1244.   year =      1992,
  1245.   organization = "SIGPLAN",
  1246.   publisher = "ACM Press",
  1247.   address =      "San Francisco, California",
  1248.   month =      "June"
  1249. }
  1250.  
  1251. If Sather needs a GC you should at least look at this paper. As for timing
  1252. we are still several months away from having gm3 ported to a MIPS or Alpha
  1253. machine so you might just keep us in mind and talk to us this summer to
  1254. see where we are. Good luck. Eliot (Moss@cs.umass.edu) is also working on
  1255. this project.
  1256. -----------------------------------------------------------------
  1257. >From muller@src.dec.com Thu Jan 28 14:09:09 1993
  1258.  
  1259. We are working on a Modula-3 compiler that uses gcc as its back-end.  Not
  1260. everything is working but we have made good progress so far, and here is a
  1261. summary.
  1262.  
  1263. First, you probably don't want to generate RTL directly.  If you look at
  1264. tree.def, you will see that there is another representation of the code,
  1265. let's call it the tree representation.  The parsers generate tree
  1266. representations that are essentially machine and language-independant.
  1267. The code that transforms this tree representation to RTL knows a lot about
  1268. the machine for which you are compiling; for example it knows the calling
  1269. conventions, such are r4 to r7 contains the first 4 words of integer type
  1270. actual arguments on mips.
  1271.  
  1272. Unfortunately, the tree representation is very poorly documented; in
  1273. particular, the collection of functions you need to call is not very
  1274. clear.  Some of the node types are not implemented, and some of them are
  1275. still language dependant (for example, integer addition does not check for
  1276. overflow).
  1277.  
  1278. Since gcc was not the obvious choice of back-end for us, we have written
  1279. our own back-end interface.  Our hope was to be able to implement that
  1280. interface in various ways to satisfy our needs.  One of the goals was that
  1281. it should be possible to implement a naive code generator easily; this
  1282. means that the interface is very low level; for example, frame pointers
  1283. for nested procedures are manipulated explicitly.
  1284.  
  1285. The implementation of our interface consists mostly into making the calls
  1286. that the C parser would make if presented with a C program that does the
  1287. same as the Modula-3 program we are compiling.  We save cpp, the parsing,
  1288. a fair amount of checking.
  1289.  
  1290. So far, we have made only one small modification in the code that
  1291. generates the RTL (which we don't consider to be ours) to support nested
  1292. procedures.  We expect more extensive modifications to handle correctly
  1293. exceptions.
  1294.  
  1295. I have included our interface below (it's actually in two interfaces, plus
  1296. one machine specific interface).  It will probably be modified somewhat
  1297. before we have a running compiler, and it probably needs a lot of
  1298. documentation.  [text not included in this summary - Dave]
  1299. -- 
  1300. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1301. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1302.  
  1303.  
  1304. From compilers Mon Feb  1 18:25:36 EST 1993
  1305. Newsgroups: comp.compilers
  1306. Path: iecc!compilers-sender
  1307. From: bar@advtech.uswest.com (Bala Ramakrishnan)
  1308. Subject: Global Data flow analysis
  1309. Message-ID: <93-02-012@comp.compilers>
  1310. Keywords: analysis, comment
  1311. Sender: compilers-sender@iecc.cambridge.ma.us
  1312. Reply-To: bar@advtech.uswest.com (Bala Ramakrishnan)
  1313. Organization: U S WEST Advanced Technologies
  1314. Date: Fri, 29 Jan 1993 22:44:59 GMT
  1315. Approved: compilers@iecc.cambridge.ma.us
  1316.  
  1317. While local (function level) data flow analysis is fairly well defined,
  1318. does anyone have any info on techniques/problems associated with global
  1319. data flow. Can you suggest any papers/books on this subject?
  1320.  
  1321. Thanks for the info.
  1322. --
  1323. Bala Ramakrishnan  E-mail: bar@uswest.com  Phone: 303-541-6283
  1324. USWEST Advanced Tech., 4001 Discovery Dr., Boulder, CO - 80303
  1325. [Other than the practical issues involved with separate compilation or
  1326. the lack thereof, are there any issues peculiar to global dataflow? -John]
  1327. -- 
  1328. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1329. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1330.  
  1331.  
  1332. From compilers Mon Feb  1 18:26:42 EST 1993
  1333. Xref: iecc comp.sys.super:1911 comp.arch:25794 comp.compilers:4183
  1334. Newsgroups: comp.sys.super,comp.arch,comp.compilers
  1335. Path: iecc!compilers-sender
  1336. From: shubu@cs.wisc.edu (Shubhendu S. Mukherjee)
  1337. Subject: Re: How many vector registers are useful?
  1338. Message-ID: <93-02-013@comp.compilers>
  1339. Keywords: vector
  1340. Sender: compilers-sender@iecc.cambridge.ma.us
  1341. Reply-To: shubu@cs.wisc.edu (Shubhendu S. Mukherjee)
  1342. Organization: Univ. of Wisconsin @ Madison, CS Dept.
  1343. References: <93-01-174@comp.compilers> <93-01-201@comp.compilers>
  1344. Date: Sat, 30 Jan 1993 00:22:10 GMT
  1345. Approved: compilers@iecc.cambridge.ma.us
  1346.  
  1347.  
  1348. jlg@cochiti.lanl.gov (J. Giles) writes:
  1349. >Vectors and scalars are not really all that different.  Unless you have
  1350. >overlap between the vectors they really behave just like large scalars.
  1351.  
  1352. hyatt@cis.uab.edu (Robert Hyatt) writes:
  1353. > Same holds true for vectors.  You don't necessarily have to have high
  1354. > reuse to win, just enough registers to keep data flowing (a) from memory
  1355. > (b) to memory and (c) between functional units....
  1356.  
  1357. This is the THE bottom line.  So you are actually talking about high-speed
  1358. load and store buffers and intermediate registers for chaining as in Cray.
  1359.  
  1360. However, codes like blocked matrix multiplication could potentially make
  1361. effective use of vector registers.
  1362.  
  1363. -Shubu
  1364. --
  1365. Shubhendu Sekhar Mukherjee      University of Wisconsin @ Madison, C.Sc.
  1366. Net:shubu@cs.{wisc,utexas}.edu   [W]:(608) 262-6607    [H]:(608) 255-6322
  1367. -- 
  1368. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1369. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1370.  
  1371.  
  1372. From compilers Mon Feb  1 18:27:57 EST 1993
  1373. Newsgroups: comp.compilers
  1374. Path: iecc!compilers-sender
  1375. From: moliere!pmk@uunet.UU.NET (Peter Michael Klausler)
  1376. Subject: Vector registers
  1377. Message-ID: <93-02-014@comp.compilers>
  1378. Keywords: vector, architecture
  1379. Sender: compilers-sender@iecc.cambridge.ma.us
  1380. Reply-To: moliere!pmk@uunet.UU.NET (Peter Michael Klausler)
  1381. Organization: Compilers Central
  1382. References: <93-01-174@comp.compilers> <93-01-201@comp.compilers>
  1383. Date: Sat, 30 Jan 1993 04:41:55 GMT
  1384. Approved: compilers@iecc.cambridge.ma.us
  1385.  
  1386. Although lots of folks know about this, in the interest of completeness in
  1387. the discussion about the best number of vector registers I'd like to point
  1388. out the capability of "tailgating" found on a couple of machines I've had
  1389. the pleasure of working with.
  1390.  
  1391. Tailgating permits results to flow into a vector register while data are
  1392. concurrently flowing out. E.g.,
  1393.  
  1394.     V0 <- V1+V2
  1395.     V1 <- V3*V4    ! no need to wait for V1
  1396.  
  1397. can run in parallel, subject to initial availability of V1-4. This
  1398. capability increases the number of registers available to a scheduler, for
  1399. the operand registers coming into their last (or only) uses in a chime can
  1400. also serve as result registers in that same chime.
  1401.  
  1402. In kernels with no reused vector registers, then, tailgating means that
  1403. you can get by with about as many vector registers as you have functional
  1404. units. This capability is useful for machines without more flexible (but
  1405. expensive) chaining mechanisms, for it permits construction of a very
  1406. efficient polycyclic schedule for the kernel.
  1407.  
  1408. (In the absence of tailgating, aggressive schedulers can run out of result
  1409. registers and must delay instructions to later chimes.  Polycyclic
  1410. scheduling techniques that construct a regular pattern of operations, such
  1411. as modulo reservation table SW pipelining, can run into trouble. An
  1412. irregular polycyclic method seems to fare a little better under register
  1413. pressure in my experience.)
  1414. -- 
  1415. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1416. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1417.  
  1418.  
  1419. From compilers Mon Feb  1 18:28:47 EST 1993
  1420. Newsgroups: comp.compilers
  1421. Path: iecc!compilers-sender
  1422. From: nzkite!foster@gvls1.VFL.Paramax.COM (Foster Schucker)
  1423. Subject: Compilers for Microchip PIC16C5x
  1424. Message-ID: <93-02-015@comp.compilers>
  1425. Keywords: question
  1426. Sender: compilers-sender@iecc.cambridge.ma.us
  1427. Reply-To: nzkite!foster@gvls1.VFL.Paramax.COM (Foster Schucker)
  1428. Organization: Kiteflyers Roost
  1429. Date: Fri, 29 Jan 1993 22:40:22 GMT
  1430. Approved: compilers@iecc.cambridge.ma.us
  1431.  
  1432. I'm looking for a compiler for the PIC 16C5x series of microprocessors.
  1433.  
  1434. I'd prefer C or Pascal, hosted on MS-DOS but beggars can't be choosers.
  1435.  
  1436. The Microchip PIC 16C5x series of microprocessors is a small (18-28 pin)
  1437. chip with 33 instructions, a 12 bit word, with 2K of EPROM.  They are
  1438. ideal for small jobs.  At 5 volts / 2 ma battery projects are possible.
  1439. With clock speeds up to 20Mhz you can do calculation intensive systems.
  1440.  
  1441. The instructions are all single word, all operations with the exception of
  1442. brances occur in one cycle.  Branches take two cycles.  There are 15-72
  1443. registers(depending on the specific model) for programming use.
  1444.  
  1445. I know that most people will (should?) be using assember, I'd rather
  1446. program them in a HLL.
  1447.  
  1448. Thanks!!
  1449. Foster Schucker -- foster@nzkite.uucp -- (215) 458-8354 (voice)
  1450. -- 
  1451. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1452. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1453.  
  1454.  
  1455. From compilers Mon Feb  1 18:29:36 EST 1993
  1456. Newsgroups: comp.compilers
  1457. Path: iecc!compilers-sender
  1458. From: idacrd!desj@uunet.UU.NET (David desJardins)
  1459. Subject: Re: Re How many vector registers are useful?
  1460. Message-ID: <93-02-016@comp.compilers>
  1461. Keywords: vector, architecture
  1462. Sender: compilers-sender@iecc.cambridge.ma.us
  1463. Reply-To: idacrd!desj@uunet.UU.NET (David desJardins)
  1464. Organization: IDA Center for Communications Research, Princeton
  1465. References: <93-01-174@comp.compilers> <93-01-211@comp.compilers>
  1466. Date: Sun, 31 Jan 1993 05:15:43 GMT
  1467. Approved: compilers@iecc.cambridge.ma.us
  1468.  
  1469. Bill Mangione-Smith <billms@corp.corp.mot.com> writes:
  1470. > Santosh Abraham, Ed Davidson, and I had a paper two asplos's ago that
  1471. > looked at the minimal number of vector registers required for specific
  1472. > codes.  [.... W]e decided to focus on the minimal number of registers
  1473. > required to achieve optimal performance.
  1474.  
  1475. I haven't looked at your paper, but I think that you have to be very
  1476. careful in using the word "optimal" here.  I have written a fair number of
  1477. assembly-language routines for vector machines, and it is very often the
  1478. case that the number of vector registers needed for "nearly optimal" code
  1479. is substantially less than that needed for "perfectly optimal" code.
  1480.  
  1481. In my experience, what often happens is that you can get a code which is
  1482. "nearly optimal" in the sense of taking the correct number of chimes to
  1483. execute the loop, but a few more ticks than is strictly necessary, because
  1484. the usage of the vector registers is not perfectly synchronized.  A vector
  1485. functional unit might have to wait for its input for a few ticks, for
  1486. example, because the latency of the unit feeding it is greater than its
  1487. own latency.  These few ticks might only add a few percent to the
  1488. execution time of the loop, but it might take as much as double the number
  1489. of vector registers to eliminate them.
  1490.  
  1491. Perhaps you were looking at some sort of "ideal" vector machine?  Assuming
  1492. things like constant latencies in the functional units would certainly
  1493. simplify a truly optimal analysis while probably producing nearly
  1494. equivalent results for practical purposes.
  1495.  
  1496.                                         David desJardins
  1497. -- 
  1498. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1499. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1500.  
  1501.  
  1502. From compilers Mon Feb  1 18:39:39 EST 1993
  1503. Xref: iecc comp.compilers:4187 misc.jobs.offered:23090
  1504. Newsgroups: comp.compilers,misc.jobs.offered
  1505. Path: iecc!compilers-sender
  1506. From: compilers-jobs@iecc.cambridge.ma.us
  1507. Subject: Compiler positions available for week ending January 31
  1508. Message-ID: <93-02-017@comp.compilers>
  1509. Keywords: jobs
  1510. Sender: compilers-sender@iecc.cambridge.ma.us
  1511. Reply-To: compilers-jobs@iecc.cambridge.ma.us
  1512. Organization: Compilers Central
  1513. Date: Sun, 31 Jan 1993 13:00:02 GMT
  1514. Approved: compilers@iecc.cambridge.ma.us
  1515.  
  1516. This is a digest of ``help wanted'' and ``position available'' messages
  1517. received at comp.compilers during the preceding week.  Messages must
  1518. advertise a position having something to do with compilers and must also
  1519. conform to the guidelines periodically posted in misc.jobs.offered.  To
  1520. respond to a job offer, send mail to the author of the message.  To submit
  1521. a message, mail it to compilers@iecc.cambridge.ma.us.
  1522.  
  1523.  
  1524. -------------------------------
  1525.  
  1526. Reply-To: khb@chiba.Eng.Sun.COM (Keith Bierman)
  1527. Subject: compiler positions open
  1528. Date: 27 Jan 93 14:20:17
  1529.  
  1530. SunPro, the division of Sun Microsystems Inc. which develops and markets
  1531. compilers and programming environments, has several openings in a project
  1532. to build a compiler for a new advanced RISC architecture.  This compiler
  1533. will extend the state-of-the-art in the areas of profile feedback, scalar
  1534. optimization and global instruction scheduling.  Other areas of interest
  1535. include cache optimization and interprocedural analysis.  If you are
  1536. interested in contributing to such a project please contact:
  1537.  
  1538.     john.wallace@eng.sun.com
  1539.     voice: 415 336 5846
  1540.     fax  : 415 964 0946
  1541.     snail: 2550 Garcia Ave
  1542.                UMTV:12-40
  1543.            Mountain View, CA 94043-1100
  1544. -- 
  1545. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1546. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1547.  
  1548.  
  1549. From compilers Mon Feb  1 18:40:13 EST 1993
  1550. Newsgroups: comp.compilers
  1551. Path: iecc!compilers-sender
  1552. From: nigel@socs.uts.EDU.AU (Nigel Pearson)
  1553. Subject: Re: [TDR] Token-Based Compilers
  1554. Message-ID: <93-02-018@comp.compilers>
  1555. Keywords: C, interpreter
  1556. Sender: compilers-sender@iecc.cambridge.ma.us
  1557. Reply-To: nigel@socs.uts.EDU.AU (Nigel Pearson)
  1558. Organization: School of Computer Science, UTS
  1559. References: <93-01-182@comp.compilers>
  1560. Date: Mon, 1 Feb 1993 01:41:50 GMT
  1561. Approved: compilers@iecc.cambridge.ma.us
  1562.  
  1563. tdarcos@mcimail.com (Paul Robinson) asks:
  1564. >I'd like to ask what people think of the idea of Compilers that generate
  1565. >ficticious machine code, i.e. tokens for an optimized machine which is
  1566. >then interpreted on the target.
  1567.  
  1568.     One system which uses this is ACK, the Amsterdam Compiler Kit.  It
  1569. has a set of Front Ends which generate EM instructions. EM is the machine
  1570. language of a ficticious Extended von-Neumann machine.  (no, I don't know
  1571. where they got the M from either!)
  1572.  
  1573.     The ACK system provides both interpreters and translators for the
  1574. EM code.
  1575. -- 
  1576. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1577. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1578.  
  1579.  
  1580. From compilers Tue Feb  2 08:30:01 EST 1993
  1581. Xref: iecc comp.sys.super:1912 comp.arch:25806 comp.compilers:4189
  1582. Newsgroups: comp.sys.super,comp.arch,comp.compilers
  1583. Path: iecc!compilers-sender
  1584. From: kurz@math.uni-frankfurt.de (Volker Kurz)
  1585. Subject: Re: How many vector registers are useful?
  1586. Message-ID: <93-02-019@comp.compilers>
  1587. Followup-To: comp.sys.super
  1588. Keywords: architecture, performance
  1589. Sender: compilers-sender@iecc.cambridge.ma.us
  1590. Reply-To: kurz@math.uni-frankfurt.de (Volker Kurz)
  1591. Organization: University of Frankfurt/Main, Dept. of Mathematics
  1592. References: <93-01-174@comp.compilers>
  1593. Date: Mon, 1 Feb 1993 15:00:03 GMT
  1594. Approved: compilers@iecc.cambridge.ma.us
  1595.  
  1596. kirchner@uklira.informatik.uni-kl.de einhard Kirchner) writes:
  1597. > [is a large vector] register file useful at all ?
  1598.  
  1599. Definitely yes.
  1600.  
  1601. > A register has an optimizing effect only when the value in it can be used
  1602. > several times, at least twice, ...
  1603. >
  1604. > But how is this on vector machines ? The register creates a speedup only
  1605. > when it can hold an entire vector, which can be used again later. This
  1606. > requires a register long enough to do so. That means vectors of e.g. a
  1607. > length of 5000 can not be held anyway, every machine must load, process,
  1608. > and store it in pieces, and only a lot of memory bandwidth helps.
  1609.  
  1610. Every vector command introduces a new startup period.  So if you have to
  1611. cut your original vector(s) into pieces that fit into a vector register,
  1612. it helps if you need fewer pieces.  That is the advantage of configuring a
  1613. few very long registers.
  1614.  
  1615. > When configured as a few long vectors the Fujitsu vector registers may
  1616. > help, but then comes the second question: Are there any statistics on the
  1617. > reusing of vectors? I know about such things for scalar registers, where
  1618. > people found that 32 is plenty enough, and only 8 help a lot. But in these
  1619. > cases registers are used for loop indexes, addresses etc., which can not
  1620. > be compared to the use of vector registers.
  1621. >
  1622. > So: what can be gained with such a big vector register file ? Or is it
  1623. > only of limited help ? Can the register file be traded against bandwith to
  1624. > load and store from memory ?
  1625.  
  1626. Yes it can, and this may be the main reason why Fujitsu gave us such a
  1627. large register file.
  1628.  
  1629. If you configure more but shorter registers, than you have enough space to
  1630. keep intermediate results.  This may be the most important advantage of a
  1631. large register file: to avoid memory traffic at all.
  1632.  
  1633. By keeping intermediate results in vector registers, you do increase
  1634. computational intensity which is defined as
  1635.  
  1636.     number of arithmetic operations
  1637.     -------------------------------
  1638.     number of (main-)memory references
  1639.  
  1640. This has to be seen together with the number of data paths (max number of
  1641. memory references per pipe per cicle), which is 3 for a Cray Y-MP, 2 for a
  1642. VP1xxx (as you have in Kaiserslautern) and, alas, only 1 for a VP2xxx.  As
  1643. a rule of thumb, a good estimate for an upper bound of the speed of an
  1644. arithmetic operation is
  1645.  
  1646.     min{computational intensity * data paths, 1} * peak performance
  1647.  
  1648. A simple vector add has a computational intensity of 1/3, so it requires 3
  1649. data paths for full speed.  This is the case on a Y-MP (at least
  1650. theoretically, you cannot get the full speed because of memory conflicts
  1651. with other processors).  On a VP2xxx however you get only roughly 1/3 of
  1652. peak performance.  On the latter machine, increasing computational
  1653. intensity has a dramatic impact on the sustained speed.  In many cases
  1654. (among these is matrix multiplication) you can increas computational
  1655. intensity by unrolling outer loops.  This is where a large number of
  1656. vector registers is very useful.
  1657.  
  1658. You can exploit this on your own machine fairly easily by using the
  1659. routines from level 2 BLAS and level 3 BLAS.  To the best of my knowledge,
  1660. Kaiserslautern uses the routines that were optimized at the University of
  1661. Karlsruhe as part of the ODIN project.
  1662.  
  1663. Hope this helps,
  1664. Volker Kurz
  1665.  
  1666. --
  1667. Dr. Volker Kurz                ***     J. W. Goethe-Universitaet
  1668. kurz@math.uni-frankfurt.de     ***     Fachbereich Mathematik
  1669. -- 
  1670. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1671. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1672.  
  1673.  
  1674. From compilers Tue Feb  2 08:32:36 EST 1993
  1675. Newsgroups: comp.compilers
  1676. Path: iecc!compilers-sender
  1677. From: wjw@eb.ele.tue.nl (Willem Jan Withagen)
  1678. Subject: Re: Code quality
  1679. Message-ID: <93-02-020@comp.compilers>
  1680. Keywords: optimize, performance
  1681. Sender: compilers-sender@iecc.cambridge.ma.us
  1682. Reply-To: wjw@eb.ele.tue.nl (Willem Jan Withagen)
  1683. Organization: Eindhoven University of Technology, The Netherlands
  1684. References: <93-01-017@comp.compilers> <93-01-033@comp.compilers>
  1685. Date: Mon, 1 Feb 1993 10:04:24 GMT
  1686. Approved: compilers@iecc.cambridge.ma.us
  1687.  
  1688. >On the other hand: ... I've heard of software companies for which compile
  1689. >time is everything, who refuse to add optimizations that will make -O more
  1690. >than twice as slow as non-optimizing.
  1691.  
  1692. On the third hand: :-)
  1693.  
  1694. I've got this large set of modules which are based on a few tree
  1695. structures.  Now if I change something in those structures, I've got to
  1696. recompile >50k lines.  Once everything is stable, it doesn't need
  1697. recompilation that often. But to emphasize your remark.
  1698.  
  1699.  Compiling the largest module with -W0,-opt,0 (Apollo-ees for noptimisation)
  1700.  it takes about 15 secs to compile. (CPU time that is, Wall time > 1.30)
  1701.  Doing the same with -W0,-opt,3 it takes over 2.5 minutes :{
  1702.  (And all this takeing a mere 15 minutes of wallclock time :{{ )
  1703.  
  1704. And the fun part with this is:
  1705.  
  1706. There's a rather large switch inside, and the compiler manages to mess up
  1707. its table, and generate eronous code, or backend failures. Which get fixed
  1708. once in a while by using level 3 optimisation. (Hence I knew the time.)
  1709. Supposedly GCC has some of the same features, most compilers are not very
  1710. often exersized at the nopt. level and have relatively more bugs in that
  1711. part.
  1712.  
  1713. Once programs are finished and release upon the poor user, I'll start
  1714. optimising.  (And test before release). Only when a program has run
  1715. flawlessly for a long while I'll take out all the asserts to get your last
  1716. 1%.
  1717.  
  1718. >The marketplace takes all kinds.
  1719.  
  1720. Which I fully underscribe, as you've guessed.
  1721.  
  1722.     Willem Jan Withagen
  1723.  
  1724. --
  1725. Digital Information Systems Group, Room EH 10.35
  1726. Eindhoven University of Technology
  1727. P.O. 513                             Tel: +31-40-473401,Fax: +31-40-448375
  1728. 5600 MB Eindhoven                    The Netherlands
  1729. Internet:  wjw@eb.ele.tue.nl
  1730. X400:      C=nl;ADMD=400net;PRMD=surf;O=tue;OU=ele;OU=eb;S=WJW;
  1731. -- 
  1732. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1733. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1734.  
  1735.  
  1736. From compilers Tue Feb  2 08:34:21 EST 1993
  1737. Xref: iecc comp.misc:11434 comp.programming:3495 comp.compilers:4191
  1738. Newsgroups: comp.misc,comp.programming,comp.compilers
  1739. Path: iecc!compilers-sender
  1740. From: wjw@eb.ele.tue.nl (Willem Jan Withagen)
  1741. Subject: Re: Architecture description languages for compilers?
  1742. Message-ID: <93-02-021@comp.compilers>
  1743. Keywords: architecture
  1744. Sender: compilers-sender@iecc.cambridge.ma.us
  1745. Reply-To: wjw@eb.ele.tue.nl (Willem Jan Withagen)
  1746. Organization: Eindhoven University of Technology, The Netherlands
  1747. References: <93-01-180@comp.compilers>
  1748. Date: Mon, 1 Feb 1993 10:41:59 GMT
  1749. Approved: compilers@iecc.cambridge.ma.us
  1750.  
  1751. eigenstr@cs.rose-hulman.edu (Todd R. Eigenschink) writes:
  1752. >I'm planning on doing some research in optimization and code generation
  1753. >next quarter.  One of the topics I'm interested in is machine
  1754. >descriptions--some vanilla way to describe the architecture of a machine
  1755. >for purposes of code generation.  (Numbers of registers, addressing modes,
  1756. >etc.)
  1757.  
  1758. Well as far as I know, is there still some work going on on this topic.
  1759. Not as much as a few years ago, when a system like ISPS was really hot
  1760. topic.  VHDL sort of flattened out some of the hardware description
  1761. desires, but not the type you describe.
  1762.  
  1763. But still things are happening, I know of a person/group on the Munich
  1764. University who's doing a Phd on this subject.  Unfortunatly is he not
  1765. allowed to show any results before the submission of the thesis. :(
  1766. Another group in Paderborn is looking into tools to describe optimisations
  1767. in a more system independant way.
  1768.  
  1769. It is also the field of interest in which I trying to get my Phd. And
  1770. we've come up with a sort of hierachical description system which should
  1771. eventually lead to automagical (read: semi-automatic, with the hard part
  1772. thru 'human interaction') created assemblers, compilers, simulators,
  1773. performance evaluators.
  1774.  
  1775. If you are interested, I can mail you a user-manual of one of the language
  1776. definitions we designed. (and implemented)
  1777.  
  1778. And the moderator adds:
  1779. >[There have been lots of architecture description languages over the years.
  1780. >Whether any of them can be used to mechanically generate a compiler is
  1781. >another question.  I suspect they'd be more useful for validation. -John]
  1782.  
  1783. Well not quite true, I think the commercial variant of ISPS (endot) did
  1784. something like this. I've not been able to get much more info about this,
  1785. other than it should work.  And one thing that should not be forgotten is,
  1786. that some of these languages were done before we had abundant computing
  1787. power. Some of the early systems were done in assembler. Now that we've
  1788. got more fuel to burn, some things can/should be re-investigated. Which is
  1789. what I'm currently doing.
  1790.  
  1791.     Regards,
  1792.         Willem Jan Withagen
  1793.  
  1794. Some bibtex reference I've got lingering around:
  1795. @article
  1796.     (BarbacciISPS
  1797.     ,author       = "Mario~R. Barbacci"
  1798.         ,title     = "Instruction set processor specifications (ISPS):
  1799.               The notation and its apliccations"
  1800.         ,journal   = "IEEE Transactions on computers"
  1801.     ,volume       = "C-30"
  1802.     ,number       = 1
  1803.         ,year      = 1981
  1804.         ,month     = "january"
  1805.     ,indexkeys = "Architecture evaluation, automatic programming,
  1806.              behavioural description, computer-aided design,
  1807.              computer description languages, instruction set processor
  1808.              "
  1809.       ,abstract  = "
  1810.        The instructions set processor specifications (ISPS) computer
  1811.        description language is an evolutionary step towards the
  1812.        formalistation of the digital design process at the higher or
  1813.        behavioral levels. It has been used as a design tool, which
  1814.        covers a wider area of application than any other hardware
  1815.        description language. Thus, besides simulation and synthesis of
  1816.        hardware, software generation, program verification, and
  1817.        architectureal evaluation and control are among the the current
  1818.        applications based on ISPS. The range of current and
  1819.        contemplated applicaiton areas are proff of the usefulness of
  1820.        the notation and its extension mechanisms. ISPS supports a wide
  1821.        range of applications and areas of research to coexist and
  1822.        share machine descriptions. The second part describes some of
  1823.        the current applications of ISPS."
  1824.     )
  1825. @article(Barb77
  1826.     ,author    = "M.R. Barbacci"
  1827.     ,title     = "Evaluation of the CFA test program via formal
  1828.         computer descriptions"
  1829.     ,journal   = "Computer"
  1830.     ,month       = oct
  1831.     ,year       = 1977
  1832.     ,pages       = {36-43}
  1833.     )
  1834.  
  1835. And one which I haven't seen (yet):
  1836. @manual(Endot
  1837.     ,title    = "N.2 Introduction and tutorial"
  1838.     ,organisation = "Endot Inc."
  1839.     ,address = "11001 cedar Ave., Cleveland,  Ohio 44106"
  1840.     ,year = 1987
  1841.     )
  1842.  
  1843. --
  1844. Digital Information Systems Group, Room EH 10.35
  1845. Eindhoven University of Technology
  1846. P.O. 513                             Tel: +31-40-473401,Fax: +31-40-448375
  1847. 5600 MB Eindhoven                    The Netherlands
  1848. Internet:  wjw@eb.ele.tue.nl
  1849. X400:      C=nl;ADMD=400net;PRMD=surf;O=tue;OU=ele;OU=eb;S=WJW;
  1850. -- 
  1851. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1852. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1853.  
  1854.  
  1855. From compilers Tue Feb  2 08:36:36 EST 1993
  1856. Newsgroups: comp.compilers
  1857. Path: iecc!compilers-sender
  1858. From: swl26@cas.org (Steve Layten x3451)
  1859. Subject: justify use of flex vs. lex - summary
  1860. Message-ID: <93-02-022@comp.compilers>
  1861. Keywords: lex, summary
  1862. Sender: compilers-sender@iecc.cambridge.ma.us
  1863. Reply-To: swl26@cas.org (Steve Layten x3451)
  1864. Organization: Compilers Central
  1865. Date: Mon, 1 Feb 1993 21:17:30 GMT
  1866. Approved: compilers@iecc.cambridge.ma.us
  1867.  
  1868. Original question:
  1869.  
  1870.     I need to use flex instead of lex for a job I have that exceeds
  1871.     capacities of some lex features.  I want to put this into a
  1872.     "production" job stream, and our current "standards" seem to
  1873.     discourage use of public-domain code in production, the standard
  1874.     managment argument being that we should use vendor-supported code
  1875.     so we don't have to spend time maintaing the code ourselves.  I
  1876.     must justify the use of this "non-supported" code in production.
  1877.  
  1878.     I would appreciate hearing comments from this community regarding
  1879.     arguments for or against the use of flex vs. the vendor-supplied lex.
  1880.     Some additional considerations which I think are important are:
  1881.  
  1882.     [reasons deleted ]
  1883.  
  1884. Several persons, including the moderator indicated that flex contained
  1885. fewer bugs or had better support than lex: (ken@syd.dit.csiro.au (Ken Yap),
  1886.     spot@hopeless.mess.cs.cmu.edu, zstern@adobe.com (Zalman Stern),
  1887.     root@rwsys.wimsey.bc.ca (Randy Wright),
  1888.     anton@mips.complang.tuwien.ac.at (Anton Ertl)).
  1889.  
  1890. One or two specifically mentioned performance:
  1891.     (daniels@walleye.cse.ogi.edu (Scott David Daniels),
  1892.     root@rwsys.wimsey.bc.ca (Randy Wright)).
  1893.  
  1894. Others indicated that I should consider paying others for support.  Cygnus
  1895. Support (contact: don@cygnus.com (Don Rector), 415/903-1408) was mentioned
  1896. by three persons: (burley@gnu.ai.mit.edu (Craig Burley),
  1897.     jbuck@forney.berkeley.edu (Joe Buck), (also gave
  1898.         jbuck@ohm.berkeley.edu as e-mail address)
  1899.     joe@modcomp.com (Joe Korty)).
  1900.  
  1901. Randy Wright (root@rwsys.wimsey.bc.ca) also pointed out some additional
  1902. features of flex:
  1903.  
  1904.     >For example, I needed a re-entrant scanner to interpret ansi terminal
  1905.     >codes into curses calls. It took an afternoon to modify flex to run
  1906.     >in a re-entrant fashion.
  1907.  
  1908.     >Flex has the exclusive start conditions that lex (at least my
  1909.     >version) lacks. I have found the exclusive start condition feature
  1910.     >very useful in state machine tasks.
  1911.  
  1912. Finally one person (Basile STARYNKEVITCH <basile@soleil.serma.cea.fr>)
  1913. suggested that I look at PCCTS:
  1914.     "It is a lexical+syntaxical analyser generator having more
  1915.     features than yacc+lex and their derivatives (flex, bison). PCCTS
  1916.     is public domain, (not GPL copylefted) so you can use it for
  1917.     commercial products without violating its notice, which explicitly
  1918.     permit use for commerical or proprietary software (both prohibited
  1919.     by bison&flex's copyright)."
  1920. He include a README file (fairly long, which I will not include), and
  1921. indicated that PCCTS files are available via anon ftp from
  1922. marvin.ecn.purdue.edu (128.46.179) in the subdirectory pub/pccts/1.06
  1923. (beginning December 1, 1992).
  1924.  
  1925. Thank-you all for your help,
  1926.  
  1927. Steve Layten
  1928. --
  1929. Steven W. Layten, Senior Engineer
  1930. Chemical Abstracts Service, PO Box 3012, Columbus, OH 43210    +1 614 447 3600
  1931. INET: swl26@cas.org         BITNET: swl26@cas      UUCP: osu-cis!chemabs!swl26
  1932. -- 
  1933. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1934. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1935.  
  1936.  
  1937. From compilers Tue Feb  2 08:37:21 EST 1993
  1938. Newsgroups: comp.compilers
  1939. Path: iecc!compilers-sender
  1940. From: bart@cs.uoregon.edu (Barton Christopher Massey)
  1941. Subject: Re: Automatic Transformation of CFG to LL/LR
  1942. Message-ID: <93-02-023@comp.compilers>
  1943. Keywords: parse, theory
  1944. Sender: compilers-sender@iecc.cambridge.ma.us
  1945. Reply-To: bart@cs.uoregon.edu (Barton Christopher Massey)
  1946. Organization: University of Oregon Computer and Information Sciences Dept.
  1947. References: <93-01-122@comp.compilers> <93-02-010@comp.compilers>
  1948. Date: Tue, 2 Feb 1993 08:23:12 GMT
  1949. Approved: compilers@iecc.cambridge.ma.us
  1950.  
  1951. ramki@cs.du.edu (Ramki Thurimella) writes:
  1952. > While testing to see if a given CFG is LL(1) or LR(1) simple and
  1953. > decidable, converting one is undecidable. Exercises 5.1.12 and 5.2.12 of
  1954. >      Aho, A.V. and Ullman, J.D., "The Theory of Parsing, Translation,
  1955. >      and Compiling," Vol. 1: Parsing, Prentice-Hall, Englewood Cliffs,
  1956. >      N.J., 1972.
  1957. > raise the same issues as that of the previous posting.
  1958.  
  1959. I'll check the ref, but note that detecting, much less eliminating, CFG
  1960. ambiguity is undecidable, which is sufficient to show that converting an
  1961. arbitrary CFG to a necessarily unambiguous LL(1) or LR(1) grammar is
  1962. undecidable.  My conjectures thus were limited to unambiguous CFGs -- it
  1963. has been my experience that provably unambiguous grammars are easily
  1964. constructed for *most* interesting programming languages.
  1965.  
  1966.                     Bart Massey
  1967.                     bart@cs.uoregon.edu
  1968. -- 
  1969. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1970. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  1971.  
  1972.  
  1973. From compilers Tue Feb  2 08:38:28 EST 1993
  1974. Newsgroups: comp.compilers
  1975. Path: iecc!compilers-sender
  1976. From: reid@cherry.iss.nus.sg (Thomas Reid)
  1977. Subject: Re: EBNF Parser generator information (RRPG reply)
  1978. Message-ID: <93-02-024@comp.compilers>
  1979. Keywords: parse, tools
  1980. Sender: compilers-sender@iecc.cambridge.ma.us
  1981. Reply-To: reid@cherry.iss.nus.sg (Thomas Reid)
  1982. Organization: Institute of Systems Science, NUS, Singapore
  1983. References: <93-01-206@comp.compilers> <93-02-005@comp.compilers>
  1984. Date: Tue, 2 Feb 1993 08:53:47 GMT
  1985. Approved: compilers@iecc.cambridge.ma.us
  1986.  
  1987. I have followed the LL1 vs LALR vs EBNF debate waiting for someone to
  1988. mention that you do not have to convert your grammars to LL1 to do
  1989. recursive descent.  You can construct a parser (automatically) directly
  1990. from EBNF.  The best reference I have for doing it is Barrett, Bates,
  1991. Gustafson, and Couch "Compiler Construction - Theory and Practice, 2nd
  1992. Edition", pp. 167-173, with their description of grammar tree nodes
  1993. (gtns).
  1994.  
  1995. The basis is 1) you translate EBNF statements to gtns, 2) walk the gtns to
  1996. obtain first and follow sets, and 3) translate the augmented gtns to
  1997. procedures, one for each EBNF statement.  You never see LL1.  You can add
  1998. semantic actions naturally and by adding a four-tuple (attribute name, LHS
  1999. attached to, attribute data type, and an inherited/synthesized/local
  2000. indicator), you can automatically synthesize the formal and actual
  2001. procedure parameters.
  2002.  
  2003. With EBNF, you have ~3+ times fewer productions, the semantic actions are
  2004. clear and clean, and the resulting syntax-directed translator is readable.
  2005. Several translator classes and I have produced a TWS in Modula-2 based on
  2006. this style and it is elegant.  Avoiding LL1 makes a recursive descent TWS
  2007. intuitive and enjoyable.
  2008. -- 
  2009. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2010. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2011.  
  2012.  
  2013. From compilers Tue Feb  2 17:08:23 EST 1993
  2014. Newsgroups: comp.compilers
  2015. Path: iecc!compilers-sender
  2016. From: billms@corp.mot.com (Bill Mangione-Smith)
  2017. Subject: Re: Re How many vector registers are useful?
  2018. Message-ID: <93-02-025@comp.compilers>
  2019. Keywords: optimize, vector
  2020. Sender: compilers-sender@iecc.cambridge.ma.us
  2021. Reply-To: billms@corp.mot.com (Bill Mangione-Smith)
  2022. Organization: University of Michigan
  2023. References: <93-01-174@comp.compilers> <93-02-016@comp.compilers>
  2024. Date: Tue, 2 Feb 1993 14:05:40 GMT
  2025. Approved: compilers@iecc.cambridge.ma.us
  2026.  
  2027. Bill Mangione-Smith <billms@corp.corp.mot.com> writes:
  2028. > Santosh Abraham, Ed Davidson, and I had a paper two asplos's ago that
  2029. > looked at the minimal number of vector registers required for specific
  2030. > codes.  [.... W]e decided to focus on the minimal number of registers
  2031. > required to achieve optimal performance.
  2032.  
  2033. idacrd!desj@uunet.UU.NET (David desJardins) writes:
  2034.    I haven't looked at your paper, but I think that you have to be very
  2035.    careful in using the word "optimal" here.  I have written a fair number of
  2036.    assembly-language routines for vector machines, and it is very often the
  2037.    case that the number of vector registers needed for "nearly optimal" code
  2038.    is substantially less than that needed for "perfectly optimal" code.
  2039.  
  2040. I've certainly seen that happen as well.  We constructed a tool that used
  2041. implicit enumeration, along with a predictable set of latencies (as you
  2042. suspected), to guarantee optimal performance and minimal register
  2043. requirements.  The study really focused on register requirements, and not
  2044. code scheduling.  But once I convince you that we meant real optimal, and
  2045. not fuzzy optimal like most people seem to, you've got to either assume
  2046. that I don't know the problem complexity or I'm not selling compiler
  2047. technology.
  2048.  
  2049.    In my experience, what often happens is that you can get a code which is
  2050.    "nearly optimal" in the sense of taking the correct number of chimes to
  2051.    execute the loop, but a few more ticks than is strictly necessary, because
  2052.    the usage of the vector registers is not perfectly synchronized.  A vector
  2053.    functional unit might have to wait for its input for a few ticks, for
  2054.    example, because the latency of the unit feeding it is greater than its
  2055.    own latency.  These few ticks might only add a few percent to the
  2056.    execution time of the loop, but it might take as much as double the number
  2057.    of vector registers to eliminate them.
  2058.  
  2059. In our study we did assume an idealized machine model, but you could
  2060. easily account for these effects without increasing the complexity of the
  2061. problem.  In fact, the addition of resource hazards tends to reduce the
  2062. search time by pruning the tree sooner.  But you are right, in practice
  2063. you probably want to ignore these issues.  Jalby, Eisenbies, and
  2064. Lichnewsky had a very simple machine model for the Cray-2 which achieved
  2065. very good results.  Of course, you could get into trouble if you were
  2066. scheduling on a machine with either short vector registers or a
  2067. programmable scratch pad that the compiler decided to divide into lots of
  2068. short registers.
  2069.  
  2070.    Perhaps you were looking at some sort of "ideal" vector machine?  Assuming
  2071.    things like constant latencies in the functional units would certainly
  2072.    simplify a truly optimal analysis while probably producing nearly
  2073.    equivalent results for practical purposes.
  2074.  
  2075. I don't see how we can discuss real optimal schedules without assuming
  2076. constant latencies.  For many machines the function units really have
  2077. constant latencies, and even without multiprocessor contention memory
  2078. references are a tough problem (to say the least).  But one thing we can
  2079. do is assume a pessimistic memory system (maybe modeled in the compiler as
  2080. a varied load depending on the code) and schedule to that, like the
  2081. Cydrome people did.
  2082.  
  2083. Ultimately, who knows what the memory is going to do from run to run,
  2084. except in a really degenerate case?  Scheduling pessimistically can cause
  2085. resource collisions that you would not have otherwise seen.  It may not be
  2086. possible to say for sure what the optimal performance on live hardware is,
  2087. let alone identify or generate code that achieves it.
  2088.  
  2089. Bill
  2090. -- 
  2091. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2092. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2093.  
  2094.  
  2095. From compilers Tue Feb  2 17:14:08 EST 1993
  2096. Newsgroups: comp.compilers
  2097. Path: iecc!compilers-sender
  2098. From: martinc@cs.unc.edu (Charles R. Martin)
  2099. Subject: Looking for references on correctness concerns in compilation
  2100. Message-ID: <93-02-026@comp.compilers>
  2101. Keywords: theory
  2102. Sender: compilers-sender@iecc.cambridge.ma.us
  2103. Reply-To: martinc@cs.unc.edu (Charles R. Martin)
  2104. Organization: UNC Department of Computer Science
  2105. Date: Tue, 2 Feb 1993 15:30:23 GMT
  2106. Approved: compilers@iecc.cambridge.ma.us
  2107.  
  2108. I'm at work on a project involving the development of "trusted compilers"
  2109. --- compilers for which there is a strong guarantee of correct
  2110. compilation.  I would like to hear from anyone who is involved in
  2111. something similar; in particular, I'm interested in finding research that
  2112. relates to provably confirming the results of optimizations and code
  2113. generation.
  2114.  
  2115. Also, I'd be interested in any recommendations of conference or workshop
  2116. proceedings that might relate to this.  What are the best sources and
  2117. journals for correctness concerns in compilers?  What about new
  2118. compilation results in general?  Are there any organizations that have
  2119. produced technical reports on results that have not appeared in the
  2120. journal or conference literature?
  2121.  
  2122. Thanks for any help you can give.
  2123. --
  2124.         Charles R. Martin/(Charlie)/martinc@cs.unc.edu
  2125.      Dept. of Computer Science/CB #3175 UNC-CH/Chapel Hill, NC 27599-3175
  2126.         3611 University Dr #13M/Durham, NC 27707/(919) 419 1754
  2127. -- 
  2128. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2129. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2130.  
  2131.  
  2132. From compilers Tue Feb  2 17:25:27 EST 1993
  2133. Xref: iecc comp.ai.neural-nets:8033 comp.arch:25812 comp.compilers:4197
  2134. Newsgroups: comp.ai.neural-nets,comp.arch,comp.compilers
  2135. Path: iecc!compilers-sender
  2136. From: hfc@doc.ic.ac.uk (Hilfred Chau)
  2137. Subject: Parallel Compilation Problem
  2138. Message-ID: <93-02-027@comp.compilers>
  2139. Keywords: question
  2140. Sender: compilers-sender@iecc.cambridge.ma.us
  2141. Reply-To: hfc@doc.ic.ac.uk (Hilfred Chau)
  2142. Organization: Dept. of Computing, Imperial College, University of London, UK.
  2143. Date: Tue, 2 Feb 1993 17:28:05 GMT
  2144. Approved: compilers@iecc.cambridge.ma.us
  2145.  
  2146.           Compiling "FlowCharts like" Lang. into arrays of parallel "nodes"
  2147.           ----------------------------------------------------------------
  2148.  
  2149. Can you help ?
  2150.  
  2151. This is a parallel compilation problem.
  2152.  
  2153. Two of my friends (with Elect. Eng. background) are interested in how to
  2154. compile from (possibly) Flow Charts (need NOT be graphical, just a
  2155. representation) with logical (and, or, conditional, etc.)  & numerical
  2156. (integratin, differentiation, addition, etc) "boxes" (operations) into N x
  2157. M arrays of (parallel) "smart" nodes.  The flow chart may look like this:
  2158.  
  2159.           <input>
  2160.             |
  2161.            \|/
  2162.        |-->[Compare with 1]-YES->[integrate]---> Output
  2163.        |      |
  2164.        |     NO
  2165.        |     \|/
  2166.        |    [Differentiate]
  2167.        |      |
  2168.        ---<---
  2169.  
  2170. Note that, the representation of flowcharts is unimportant, since they can
  2171. be regarded as just another language. The point is that it has loops and
  2172. high level instructions eg. integration, as well as low level logical ones
  2173. eg. AND, OR, conditionals, etc.
  2174.  
  2175. Each node has a set of instructions (microcoded) with eg.  Inc, Dec, ADD ,
  2176. SUB, AND, OR, Buffer etc. Codes at each node are not fixed but determined
  2177. at compiled time. Also, the connection between each node is determined at
  2178. compiled time. Eg.
  2179.  
  2180.              [#](1,1)  [#](2,1) ......... [#](N,1)
  2181.  
  2182.              [#](1,2)
  2183.  
  2184.               .
  2185.               .
  2186.               .
  2187.              [#](1,M)  [#](2,M) ......... [#](N,M)
  2188.  
  2189. where each node [#](x,y), for all x<=N, y<=M, may contain:
  2190.  
  2191.              ---------------
  2192.              | AND | OR |  |
  2193.              ---------------
  2194.              | INC | DEC   |
  2195.              ---------------
  2196.              | Buffer | and many other possible instructions
  2197.              ---------------
  2198.  
  2199. Node that, a node [#](i,j) may be connected with [#](c,b), where i =/= j
  2200. =/= c =/= b, for one particular "flowchart" description, but it may NOT be
  2201. the case for another. One may regard each node as a mini "naive
  2202. processor".
  2203.  
  2204. My friends have a "virtual" machine which can execute the instructions of
  2205. the nodes in parallel. They want it to be generic so that even if the flow
  2206. charts changed, such that the compiled codes on each node and connections
  2207. among nodes changed, the underlying architecture (arrays of parallel
  2208. "smart" node) remains.
  2209.  
  2210. This seems obvious. But I am not a "compiler person".
  2211.  
  2212. They have a rather naive approach to this problem.
  2213.  
  2214. Do you know anyone, textbook or paper that describe something similar,
  2215. and/or with methodology (and algorithms/programs/packages for automated
  2216. compilation) doing such thing?
  2217.  
  2218.  
  2219. I hope my description is sufficiently clear!
  2220.  
  2221. Thank you in advance.
  2222.  
  2223. ******Please answer by email:  hfc@doc.ic.ac.uk***********
  2224.  
  2225. Yours,
  2226. Hilfred CHAU
  2227. --
  2228. Hilfred (Hiu Fai) CHAU        Email:     JANET       hfc@doc.ic.ac.uk
  2229. Department of Computing                  UUCP        ...ukc!icdoc!hfc
  2230. Imperial College             Tel(office):(+44)(0)71 589 5111 ext.4990
  2231. -- 
  2232. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2233. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2234.  
  2235.  
  2236. From compilers Tue Feb  2 17:28:07 EST 1993
  2237. Newsgroups: comp.compilers
  2238. Path: iecc!compilers-sender
  2239. From: preston@dawn.cs.rice.edu (Preston Briggs)
  2240. Subject: Re: Global Data flow analysis
  2241. Message-ID: <93-02-028@comp.compilers>
  2242. Keywords: analysis, bibliography
  2243. Sender: compilers-sender@iecc.cambridge.ma.us
  2244. Reply-To: preston@dawn.cs.rice.edu (Preston Briggs)
  2245. Organization: Rice University, Houston
  2246. References: <93-02-012@comp.compilers>
  2247. Date: Tue, 2 Feb 1993 17:52:03 GMT
  2248. Approved: compilers@iecc.cambridge.ma.us
  2249.  
  2250. bar@advtech.uswest.com (Bala Ramakrishnan) writes:
  2251. >While local (function level) data flow analysis is fairly well defined,
  2252. >does anyone have any info on techniques/problems associated with global
  2253. >data flow. Can you suggest any papers/books on this subject?
  2254.  
  2255. and the moderator writes:
  2256. >[Other than the practical issues involved with separate compilation or
  2257. >the lack thereof, are there any issues peculiar to global dataflow? -John]
  2258.  
  2259. Sure.  First though, let's follow tradition and say "interprocedural
  2260. analysis", since global analysis (traditionally!) means analysis
  2261. encompassing an entire routine.
  2262.  
  2263. Major differences include
  2264.  
  2265.     Definition of the problems and interpretation of the results.
  2266.     Typical interesting questions include: what variables _might_
  2267.     be referenced during this call, what variables _will_ be
  2268.     referenced during this call, what variables are live at the
  2269.     end of this procedure, what paramters are constant at upon
  2270.     invocation of this procedure, ...
  2271.  
  2272.     Asymptotic complexity.  The difference between "might be
  2273.     referenced" and "will be referenced" is considerable.
  2274.  
  2275.     Construction of the call (multi)graph, particularly in the
  2276.     presence of recursion, parameter aliasing, global variables,
  2277.     function-valued parameters and functions, multiple
  2278.     inheritence, ...  The more features you add, the more
  2279.     interesting it gets.
  2280.  
  2281.     And of course, the recompilation issue is significant.
  2282.     We can reasonably expect that individual procedures might have
  2283.     some maximum size, say 1000 statements.  It makes less sense
  2284.     to limit the size of programs!
  2285.  
  2286. There's a lot of interesting literature out there.  Here's a bunch of
  2287. papers in the area.  The '86 TOPLAS paper might be the best starting
  2288. point.  Be sure to check the bibliographies for further references.
  2289.  
  2290. Preston Briggs
  2291.  
  2292. ------------------------------------------------------------------------------
  2293.  
  2294. title="Efficient Computation of Flow Insensitive Interprocedural
  2295.                  Summary Information",
  2296. author="Keith D. Cooper and Ken Kennedy",
  2297. pages="247--258",
  2298. journal=sigplan,
  2299. year=1984,
  2300. month=jun,
  2301. volume=19,
  2302. number=6,
  2303. note=pldi84
  2304.  
  2305. title="Analyzing Aliases of Reference Formal Parameters",
  2306. author="Keith D. Cooper",
  2307. booktitle=popl12,
  2308. year=1985,
  2309. month=jan,
  2310. pages="281--290"
  2311.  
  2312. title="Interprocedural Optimization: Eliminating Unnecessary Recompilation",
  2313. author="Keith D. Cooper and Ken Kennedy and Linda Torczon",
  2314. journal=sigplan,
  2315. year=1986,
  2316. month=jul,
  2317. volume=21,
  2318. number=7,
  2319. note=pldi86,
  2320. pages="58--67"
  2321.  
  2322. title="Interprocedural Constant Propagation",
  2323. author="David Callahan and Keith D. Cooper and Ken Kennedy and
  2324.         Linda Torczon",
  2325. journal=sigplan,
  2326. year=1986,
  2327. month=jul,
  2328. volume=21,
  2329. number=7,
  2330. note=pldi86,
  2331. pages="152--161"
  2332.  
  2333. title="The Impact of Interprocedural Analysis and Optimization in
  2334.                  the Rn Programming Environment",
  2335. author="Keith D. Cooper and Ken Kennedy and Linda Torczon",
  2336. pages="491--523",
  2337. journal=toplas,
  2338. year=1986,
  2339. month=oct,
  2340. volume=8,
  2341. number=4
  2342.  
  2343. title="Interprocedural Side-Effect Analysis in Linear Time",
  2344. author="Keith D. Cooper and Ken Kennedy",
  2345. pages="57--66",
  2346. journal=sigplan,
  2347. year=1988,
  2348. month=jul,
  2349. volume=23,
  2350. number=7,
  2351. note=pldi88
  2352.  
  2353. title="Fast Interprocedural Alias Analysis",
  2354. author="Keith D. Cooper and Ken Kennedy",
  2355. booktitle=popl16,
  2356. year=1989,
  2357. month=jan,
  2358. pages="49--59"
  2359.  
  2360. title="Constructing the Procedure Call Multigraph",
  2361. author="David Callahan and Alan Carle and Mary W. Hall and Ken Kennedy",
  2362. journal=ieeese,
  2363. volume=16,
  2364. number=4,
  2365. month=apr,
  2366. year=1990,
  2367.  
  2368. where ieeese = IEEE Transactions on Software Engineering
  2369.       toplas = Transactions on Programming Languages and Systems
  2370.       popl   = conference proceedings of Principles of Programming Languages
  2371.       pldi   = conference proceedings of Programming Language Design
  2372.         and Implementation
  2373. -- 
  2374. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2375. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2376.  
  2377.  
  2378. From compilers Tue Feb  2 17:30:23 EST 1993
  2379. Xref: iecc comp.compilers:4199 gnu.gcc.help:3950
  2380. Newsgroups: comp.compilers,gnu.gcc.help
  2381. Path: iecc!compilers-sender
  2382. From: Whitten@Fwva.Saic.Com (David Whitten)
  2383. Subject: GCC + Garbage Collect code = new GCC?
  2384. Message-ID: <93-02-029@comp.compilers>
  2385. Keywords: GCC, GC, question
  2386. Sender: compilers-sender@iecc.cambridge.ma.us
  2387. Reply-To: Whitten@Fwva.Saic.Com (David Whitten)
  2388. Organization: Science Applications Int'l, Corp. - Computer systems operation
  2389. References: <93-02-011@comp.compilers>
  2390. Date: Tue, 2 Feb 1993 18:08:32 GMT
  2391. Approved: compilers@iecc.cambridge.ma.us
  2392.  
  2393. It sounds like someone has done a lot of work to analyze GCC for garbage
  2394. collection of intermediates, etc. (see previous posting on GCC as a back end)
  2395.  
  2396. Does anyone know if the GC code will be folded into the 'official' GCC
  2397. release?  It would make GCC a more palatable vehicle as a back end if it
  2398. were doing so...
  2399.  
  2400. David (whitten@fwva.saic.com) US:(619)535-7764
  2401. -- 
  2402. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2403. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2404.  
  2405.  
  2406. From compilers Tue Feb  2 17:31:31 EST 1993
  2407. Newsgroups: comp.compilers
  2408. Path: iecc!compilers-sender
  2409. From: preston@dawn.cs.rice.edu (Preston Briggs)
  2410. Subject: Re: Thompson's 2c vs. gcc
  2411. Message-ID: <93-02-030@comp.compilers>
  2412. Keywords: architecture, GCC
  2413. Sender: compilers-sender@iecc.cambridge.ma.us
  2414. Reply-To: preston@dawn.cs.rice.edu (Preston Briggs)
  2415. Organization: Rice University, Houston
  2416. References: <93-01-205@comp.compilers> <93-02-003@comp.compilers>
  2417. Date: Tue, 2 Feb 1993 19:11:38 GMT
  2418. Approved: compilers@iecc.cambridge.ma.us
  2419.  
  2420. Pardo wrote:
  2421. >It is an amusing exercise to compare the listed md sizes for the Thompson
  2422. >compiler to the GCC md sizes for the same machines.  I can't say whether
  2423. >the code is comparable: Thompson claims the compile time is half that of
  2424. >GCC and run time is 75% that of GCC, but it shows only slightly better run
  2425. >times than lcc, and a previous comp.compilers article said lcc was
  2426. >substantially worse than GCC.
  2427.  
  2428. Michael John Haertel <mike@skinner.cs.uoregon.edu> writes:
  2429. >I've used 2c.  My experience is that gcc produces better code, contrary to
  2430. >Thompson's claim.  He most likely forgot to turn on -O with gcc.  Without
  2431. >-O, gcc produces really pessimal code, considerably slower than pcc
  2432. >without -O for example.
  2433.  
  2434. Is 2c the same compiler that Thompson writes about in his paper "A New C
  2435. Compiler"?  Very well.
  2436.  
  2437. Remember that Thompson wrote his paper about 3 years ago (published in
  2438. July 1990).  Gcc has evolved substantially since then.  Your experinces
  2439. today don't mean Thompson lied yesterday (or "forgot" the -O flag).
  2440.  
  2441. Thompson says:
  2442.  
  2443.     "Although it was not possible to directly compare gcc to the
  2444.     new compiler, lcc typically compiles in 50% of the time of gcc
  2445.     and the object runs in 75% of the time of gcc."
  2446.  
  2447. The times for lcc and the new C compiler are given as
  2448.  
  2449.      1.0s    new cc compile time
  2450.      0.5s    new cc load time
  2451.     90.4s    new cc run time
  2452.  
  2453.      1.6s    lcc compile time
  2454.      0.1s    lcc load time
  2455.     96.3s    lcc run time
  2456.  
  2457. Further, the tests were conducted with different operating systems.  So
  2458. Thompson only offers direct comparisons with lcc.  His comments about gcc
  2459. are probably a reflection of the experience described in Fraser and
  2460. Hanson's paper "A Retargetable Compiler for ANSI C".  They compare with
  2461. gcc version 1.35 (i.e., old!) with and without -O using four programs from
  2462. the SPECmark suite (gcc1.35, expresso, li, and eqntott) and running on 4
  2463. different machines.  I won't reproduce the entire table, but I'll try to
  2464. summarize honestly.
  2465.  
  2466. For object code speed, plain gcc usually produces slightly faster code on
  2467. the VAX and 68020; lcc produces faster code for the MIPS and Sparc
  2468. (Thompson's figure of 75% less run time is reasonable).  gcc -O dominates
  2469. lcc on the VAX, 68020, and Sparc, but lcc is wins more than it loses on
  2470. the MIPS.
  2471.  
  2472. For compile time, they don't compare with gcc -O.  However, lcc is
  2473. typically between 2 and 3 times as fast as plain gcc on all reported
  2474. architectures.
  2475.  
  2476. Thompson's comparisons with lcc were conducted on the MIPS.  It seems
  2477. reasonable that his remarks about gcc reflect the (at the time) poor
  2478. implementation of gcc on the MIPS.
  2479.  
  2480. Preston Briggs
  2481. -- 
  2482. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2483. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2484.  
  2485.  
  2486. From compilers Tue Feb  2 17:33:24 EST 1993
  2487. Newsgroups: comp.compilers
  2488. Path: iecc!compilers-sender
  2489. From: joemu@wv.MENTORG.COM (Joe Mueller)
  2490. Subject: common C compiler benchmarks?
  2491. Message-ID: <93-02-031@comp.compilers>
  2492. Keywords: benchmarks, question, C
  2493. Sender: compilers-sender@iecc.cambridge.ma.us
  2494. Reply-To: joemu@wv.MENTORG.COM (Joe Mueller)
  2495. Organization: Compilers Central
  2496. Date: Tue, 2 Feb 1993 19:09:55 GMT
  2497. Approved: compilers@iecc.cambridge.ma.us
  2498.  
  2499. Can someone send me a copy of the common C compiler benchmarks
  2500. like dhrystone, whetstone, sieve, etc? Either send them directly
  2501. to me or point me at a ftp site...
  2502.  
  2503. Thanks in advance,
  2504. Joe_Mueller@mentorg.com
  2505. -- 
  2506. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2507. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2508.  
  2509.  
  2510. From compilers Wed Feb  3 18:22:04 EST 1993
  2511. Newsgroups: comp.compilers
  2512. Path: iecc!compilers-sender
  2513. From: vivek@sequent.com (Vivek Buzruk)
  2514. Subject: Compiler construction in C++ and OOD
  2515. Message-ID: <93-02-032@comp.compilers>
  2516. Summary: Is any research done on object oriented design of compiler?
  2517. Keywords: OOP, C++, question, comment
  2518. Sender: compilers-sender@iecc.cambridge.ma.us
  2519. Reply-To: vivek@sequent.com (Vivek Buzruk)
  2520. Organization: Sequent Computer Systems, Inc.
  2521. Date: Wed, 3 Feb 1993 00:39:37 GMT
  2522. Approved: compilers@iecc.cambridge.ma.us
  2523.  
  2524. Some time back I read in Software Practice and Experience an article on
  2525. compiler construction using O-O methodology (I don't remember the name, it
  2526. must be within the last year). The article was not that complete, and
  2527. concentrated only on the front end. Obviously one can not go away from
  2528. traditional phase structured design to define the functionality of a
  2529. compiler.
  2530.  
  2531. But the same article gave me some thoughts about considering object
  2532. oriented design of a compiler.  Does anyone know about research done on
  2533. this topic?  OR any practical compilers using this methodology, and how
  2534. they do it?  Till now I thought a compiler is not a good application for
  2535. O-O design. If the parser and lexer are hand written, one can consider
  2536. them state machine. But what happens if you use LEX and YACC?
  2537.  
  2538. I will be happy if any one tells whether any complete compiler is written
  2539. in C++ either. Also in what way C++ is used, only as a better C or flavor
  2540. of OOD.
  2541.  
  2542.   -- Vivek -> vivek@gateway.sequent.com
  2543. [There have been C++ derivatives of yacc, some just fixing the syntax a
  2544. little, others making parsing classes.  Flex produces legal C++ code but
  2545. doesn't do anything OOPish. -John]
  2546. -- 
  2547. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2548. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2549.  
  2550.  
  2551. From compilers Wed Feb  3 18:22:55 EST 1993
  2552. Newsgroups: comp.compilers
  2553. Path: iecc!compilers-sender
  2554. From: glew@pdx007.intel.com (Andy Glew)
  2555. Subject: Re: Practicality of functional and logic languages?
  2556. Message-ID: <93-02-033@comp.compilers>
  2557. Keywords: functional
  2558. Sender: compilers-sender@iecc.cambridge.ma.us
  2559. Reply-To: glew@pdx007.intel.com (Andy Glew)
  2560. Organization: Intel Corp., Hillsboro, Oregon
  2561. References: <93-01-059@comp.compilers>
  2562. Date: Wed, 3 Feb 1993 06:32:47 GMT
  2563. Approved: compilers@iecc.cambridge.ma.us
  2564.  
  2565.     I would like to know some opinions concerning functional and logic
  2566.     programming languages and their practical usability for programming:
  2567.  
  2568. Not directly related, but some varieties of functional and applicative
  2569. languages map much more naturally into hardware (VLSI) implementations
  2570. than procedural languages.
  2571.  
  2572. If efficient compilers could be generated for these languages, they would
  2573. be the preferred hardware modelling technique for many designers.
  2574.  
  2575. Ironically, in many design groups procedural languages are considered
  2576. "higher level", because the better compiled code permits simulations to be
  2577. done much quicker than code produced in the applicative style.  The
  2578. applicative style is often used for lower level "structural" design.
  2579.  
  2580. Note: I must admit that I am keying off single assignment form languages.
  2581. although many of the other features of functional and applicative
  2582. languages are also useful in hardware design.
  2583. --
  2584. Andy Glew, glew@ichips.intel.com
  2585. Intel Corp., M/S JF1-19, 5200 NE Elam Young Pkwy,
  2586. Hillsboro, Oregon 97124-6497
  2587. -- 
  2588. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2589. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2590.  
  2591.  
  2592. From compilers Wed Feb  3 18:24:18 EST 1993
  2593. Newsgroups: comp.compilers
  2594. Path: iecc!compilers-sender
  2595. From: pc@cl.cam.ac.uk (Paul Curzon)
  2596. Subject: Re: Looking for references on correctness concerns in compilation
  2597. Message-ID: <93-02-034@comp.compilers>
  2598. Keywords: theory, bibliography
  2599. Sender: compilers-sender@iecc.cambridge.ma.us
  2600. Reply-To: pc@cl.cam.ac.uk (Paul Curzon)
  2601. Organization: Cambridge Automated Reasoning Group
  2602. References: <93-02-026@comp.compilers>
  2603. Date: Wed, 3 Feb 1993 12:40:50 GMT
  2604. Approved: compilers@iecc.cambridge.ma.us
  2605.  
  2606. > I'm at work on a project involving the development of "trusted compilers"
  2607. > --- compilers for which there is a strong guarantee of correct
  2608. > compilation.  I would like to hear from anyone who is involved in
  2609. > something similar; in particular, I'm interested in finding research that
  2610. > relates to provably confirming the results of optimizations and code
  2611. > generation.
  2612.  
  2613. I have been working on a project (soon to finish) on the mechanical formal
  2614. verification of a code generator using the HOL system.  The language in
  2615. question is Vista which is a structured assembly language for the Viper
  2616. microprocessor. I have also looked at ways of executing a verified
  2617. compiler specification securely using a theorem prover, and formally
  2618. connecting a compiler proof with a programming logic.  There has also been
  2619. other work done here at Cambridge. The journal of automated reasoning had
  2620. a special issue on the Boyer-Moore system verification work a few years
  2621. back which you should check out. Polak's work is also worth looking at.
  2622. Jeff Joyce's tech report has quite an good overview of early compiler
  2623. verification work. There has also been a vast amount of work done on the
  2624. ProCos project at various institutions. I can send you copies of my papers
  2625. or other Cambridge tech.  reports if you are interested.  If it would be
  2626. useful I could send you a copy of my full bibliography of compiler
  2627. verification literature.
  2628.  
  2629.  
  2630. Paul Curzon
  2631.  
  2632. -----------
  2633.  
  2634. @TechReport{CamilleriJ91a,
  2635.   author =     "Juanito Camilleri",
  2636.   title =     "Symbolic Compilation and Execution of Programs by Proof: A
  2637.          Case study in {HOL}",
  2638.   institution =     "University of Cambridge, Computer Laboratory",
  2639.   year =     "1991",
  2640.   number =     "240",
  2641.   month =     dec,
  2642. }
  2643.  
  2644. @InProceedings{Curzon91,
  2645.   author =     "Paul Curzon",
  2646.   title =     "A Verified Compiler for a Structured Assembly Language",
  2647.   booktitle =     "Proceedings of the 1991 International Workshop on the {HOL}
  2648.          Theorem Proving System and its Applications",
  2649.   year =     "1992",
  2650.   OPTeditor =     "Myla Archer and Jeffrey J. Joyce and Karl N. Levitt and
  2651.                  Phillip J. Windley",
  2652.   publisher =     "{IEEE} Computer Society Press",
  2653.   OPTnote =     "A compiler for a small structured assembly language schema
  2654.          based on  Vista is verified using HOL. It compiles to a flat
  2655.          assembly language. Properties of safety and liveness are
  2656.          defined and it is suggested that proofs of source language
  2657.          programs could be mapped to proofs of target language
  2658.          programs.The compiler can be executed using the theorem
  2659.          prover."
  2660. }
  2661.  
  2662. @InProceedings{Curzon92DCCA,
  2663.   key = "Curzon92b",
  2664.   author =     "Paul Curzon",
  2665.   title =     "Compiler Correctness and Input/Output",
  2666.   booktitle =     "Proceedings of the 3rd {IFIP} Working Conference on
  2667.          Dependable Computing for Critical Applications",
  2668.   year =     "1992",
  2669.   publisher =     "Springer-Verlag",
  2670.   series =     "Dependable Computing and Fault-Tolerant Computing",
  2671.   OPTnote =     "The proof of correctness for the Vista compiler is extended
  2672.          to include IO commands. An oracle model of IO is used in the
  2673.          semantics, and it is shown that this does not hinder the
  2674.          proof."
  2675. }
  2676.  
  2677. @InProceedings{Curzon92LPAR,
  2678.   key = "Curzon92a",
  2679.   author =     "Paul Curzon",
  2680.   title =     "A Programming Logic For a Verified Structured Assembly
  2681.           Language",
  2682.   booktitle =     "Logic Programming and Automated Reasoning",
  2683.   year =     "1992",
  2684.   editor =     "A. Voronkov",
  2685.   pages =     "403-408",
  2686.   publisher =     "Springer-Verlag",
  2687.   volume =     "624",
  2688.   series =     "Lecture Notes in Artificial Intelligence",
  2689.   OPTnote =     "A programming logic of total correctness for a subset of the
  2690.          structured assembly language Vista is developed. It includes
  2691.          IO commands. Assertions about IO behaviour are made in the
  2692.          preconditions as predictions. The logic has been derived from
  2693.          a relational semantics in HOL."
  2694. }
  2695.  
  2696. @InProceedings{Curzon92HOL,
  2697.   author =     "Paul Curzon",
  2698.   title =     "Deriving Correctness Properties of Compiled Code",
  2699.   booktitle =     "International Workshop on Higher
  2700.                  Order Logic Theorem Proving and its Applications",
  2701.   year =     "1992",
  2702.   editor =     "L. Claesen and M. Gordon",
  2703.   OPTnote =     "A derived programming logic is combined with a verified
  2704.          implementation of Vista. This allows total correctness proofs
  2705.          to be performed on high level programs, and total correctness
  2706.          theorems about compiled code can be automatically obtained."
  2707. }
  2708.  
  2709. @TechReport{Curzon92WhyTR,
  2710.   author =     "Paul Curzon",
  2711.   title =     "Of What Use is a Verified Compiler Specification?",
  2712.   institution =     "University of Cambridge, Computer Laboratory",
  2713.   year =     "1992",
  2714.   number =     "274",
  2715.   OPTnote =     "Splitting a proof into implementation correctness and
  2716.          Specification correctness. A secure way of executing a
  2717.          verified specification by proof. Bootstrapping a
  2718.          verified compiler in a low level language, without first
  2719.          having a verified compiler implementation
  2720.                  available by ftp from ftp.cl.cam.ac.uk in the
  2721.                  directory hvg/papers. It is in the file WhyCompilerSpec.ps.Z"
  2722. }
  2723.  
  2724. @InProceedings{Joyce89b,
  2725.   author =     "Jeffrey J. Joyce",
  2726.   title =     "Totally Verified Systems: Linking Verified Software to
  2727.          Verified Hardware",
  2728.   booktitle =     "Specification, Verification and Synthesis: Mathematical
  2729.          Aspects",
  2730.   year =     "1989",
  2731.   editor =     "M. Leeser and G. Brown",
  2732.   publisher =     "Springer-Verlag",
  2733. }
  2734.  
  2735.  @TechReport{Joyce89,
  2736.    author =     "Jeffrey J. Joyce",
  2737.    title =     "A Verified Compiler for a Verified Microprocessor",
  2738.    institution =     "University of Cambridge, Computer Laboratory",
  2739.    year =     "1989",
  2740.    number =     "167",
  2741.    month =     mar,
  2742.  }
  2743.  
  2744. @Book{Polak81,
  2745.   author =     "Wolfgang Polak",
  2746.   title =     "Compiler Specification and Verification",
  2747.   publisher =     "Springer-Verlag",
  2748.   year =     "1981",
  2749.   OPTeditor =     "G. Goos and J. Hartmanis",
  2750.   volume =     "124",
  2751.   series =     "Lecture Notes in Computer Science",
  2752. }
  2753.  
  2754. @Article{StrotherMoore88,
  2755.   author =     "J. Strother Moore",
  2756.   title =     "A Mechanically Verified Language Implementation",
  2757.   journal =     "Journal of Automated Reasoning",
  2758.   year =     "1989",
  2759.   volume =     "5",
  2760.   pages =     "461--492",
  2761. }
  2762.  
  2763. @Article{Young89,
  2764.   author =     "William D. Young",
  2765.   title =     "A Mechanically Verified Code Generator",
  2766.   journal =     "Journal of Automated Reasoning",
  2767.   year =     "1989",
  2768.   volume =     "5",
  2769.   pages =     "493--519",
  2770. }
  2771. --
  2772. Paul Curzon            |  Tel: +44-223-334688
  2773. University of Cambridge        |  Fax: +44-223-334678
  2774. Computer Laboratory        |
  2775. New Museums Site                |
  2776. Pembroke Street            |  Email: pc@cl.cam.ac.uk
  2777. Cambridge CB2 3QG        |
  2778. United Kingdom            |
  2779. -- 
  2780. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2781. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2782.  
  2783.  
  2784. From compilers Wed Feb  3 18:27:47 EST 1993
  2785. Newsgroups: comp.compilers
  2786. Path: iecc!compilers-sender
  2787. From: amin@unirsvl.RSVL.UNISYS.COM
  2788. Subject: yytext in POSIX lex
  2789. Message-ID: <93-02-035@comp.compilers>
  2790. Keywords: lex, question, comment
  2791. Sender: compilers-sender@iecc.cambridge.ma.us
  2792. Reply-To: amin@unirsvl.RSVL.UNISYS.COM
  2793. Organization: Compilers Central
  2794. Date: Wed, 3 Feb 1993 14:49:17 GMT
  2795. Approved: compilers@iecc.cambridge.ma.us
  2796.  
  2797. In an earlier post to comp.compilers, I solicited help from the net to
  2798. test the POSIX extensions to lex and yacc.  Few people responded to my
  2799. request due to the lack of existing POSIX implementations of lex and yacc.
  2800. Thank you to one and all for your help.  John Levine, recommended his and
  2801. his colleagues' book on lex and yacc, second edition.  A very good book
  2802. indeed.  I was able to construct test cases for exclusive and inclusive
  2803. start states, collating symbols, etc ...
  2804.  
  2805. The one thing I am having a problem with is the %array and the %pointer.
  2806. It sounds too easy, however, I am confused due to the lack of experience
  2807. and examples describing them in the book.  Moreover, I am having a tough
  2808. time coming up with a scenario where such %pointer and %array are applied
  2809. or helpful.  What is the difference in real life applications?  How are
  2810. they used?
  2811.  
  2812. Thank you much.
  2813.  
  2814. My news access is not very dependable, please use e-mail if possible.
  2815.  
  2816. Regards,
  2817. --
  2818. Amin Kassem - Unisys Corporation
  2819. System Software & Interface - R&D
  2820. e-mail: amin@rsvl.unisys.com
  2821. [Of the two major implementations of lex, AT&T lex makes yytext an array
  2822. and flex makes it a pointer.  Some poorly written lexers depend on it
  2823. being one or the other, and %array and %pointer make it easier to port
  2824. such code.  You have to try fairly hard to tell the difference, e.g. use
  2825. sizeof(yytext). -John]
  2826. -- 
  2827. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2828. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2829.  
  2830.  
  2831. From compilers Wed Feb  3 18:28:58 EST 1993
  2832. Newsgroups: comp.compilers
  2833. Path: iecc!compilers-sender
  2834. From: moss@cs.cmu.edu (Eliot Moss)
  2835. Subject: Re: GCC + Garbage Collect code = new GCC?
  2836. Message-ID: <93-02-036@comp.compilers>
  2837. Keywords: GCC, GC
  2838. Sender: compilers-sender@iecc.cambridge.ma.us
  2839. Reply-To: moss@cs.cmu.edu (Eliot Moss)
  2840. Organization: Dept of Comp and Info Sci, Univ of Mass (Amherst)
  2841. References: <93-02-011@comp.compilers> <93-02-029@comp.compilers>
  2842. Date: Wed, 3 Feb 1993 16:06:31 GMT
  2843. Approved: compilers@iecc.cambridge.ma.us
  2844.  
  2845. On 2 Feb 93 18:08:32 GMT, Whitten@Fwva.Saic.Com (David Whitten) said:
  2846. > It sounds like someone has done a lot of work to analyze GCC for garbage
  2847. > collection of intermediates, etc. ... Does anyone know if the GC code will
  2848. > be folded into the 'official' GCC release?  It would make GCC a more
  2849. > palatable vehicle as a back end if it were doing so...
  2850.  
  2851. We have done work on gcc to add support for *run-time* garbage collection,
  2852. i.e., finding pointers and pointer-related quantities in registers and the
  2853. stack. I am not aware of garbage colleciton in the compiler *itself*.
  2854. --
  2855.  
  2856. J. Eliot B. Moss, Associate Professor    Visiting Associate Professor
  2857. Department of Computer Science        School of Computer Science
  2858. Lederle Graduate Research Center    Carnegie Mellon University
  2859. University of Massachusetts        5000 Forbes Avenue
  2860. Amherst, MA  01003            Pittsburgh, PA  15213-3891
  2861. (413) 545-4206, 545-1249 (fax)        (412) 268-6767, 681-5739 (fax)
  2862. Moss@cs.umass.edu            Moss@cs.cmu.edu
  2863. -- 
  2864. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2865. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2866.  
  2867.  
  2868. From compilers Wed Feb  3 18:29:58 EST 1993
  2869. Newsgroups: comp.compilers
  2870. Path: iecc!compilers-sender
  2871. From: ramki@cs.du.edu (Ramki Thurimella)
  2872. Subject: Re: Automatic Transformation of CFG to LL/LR
  2873. Message-ID: <93-02-037@comp.compilers>
  2874. Keywords: parse, theory
  2875. Sender: compilers-sender@iecc.cambridge.ma.us
  2876. Reply-To: ramki@cs.du.edu (Ramki Thurimella)
  2877. Organization: Compilers Central
  2878. References: <93-01-122@comp.compilers> <93-02-023@comp.compilers>
  2879. Date: Wed, 3 Feb 1993 21:24:52 GMT
  2880. Approved: compilers@iecc.cambridge.ma.us
  2881.  
  2882. bart@cs.uoregon.edu (Barton Christopher Massey) writes
  2883. >I'll check the ref, but note that detecting, much less eliminating, CFG
  2884. >ambiguity is undecidable, which is sufficient to show that converting an
  2885. >arbitrary CFG to a necessarily unambiguous LL(1) or LR(1) grammar is
  2886. >undecidable.  My conjectures thus were limited to unambiguous CFGs -- it
  2887.  
  2888. Could you elaborate on how the ambiguity problem can be reduced to that of
  2889. transforming a CFG to LL grammar. I certainly see one of the directions,
  2890. i.e.  if transformation is successful, then the original grammar is not
  2891. ambiguous. How does the converse follow, i.e. if there is does not exist a
  2892. transformation, how can you conclude that CFG is ambiguous?
  2893.  
  2894. On a separate note, your conjecture when limited to unambiguous CFGs to LL
  2895. seem to be false, given the following exercise from the book on theory of
  2896. parsing by Aho and Ullman (exercise 5.2.13, pp. 397):
  2897.  
  2898. "Show that it is undecidable whether an LR(k) grammar is an LL grammar."
  2899.  
  2900. Ramki Thurimella
  2901. -- 
  2902. Send compilers articles to compilers@iecc.cambridge.ma.us or
  2903. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  2904.  
  2905.  
  2906. From compilers Wed Feb  3 18:31:31 EST 1993
  2907. Xref: iecc comp.parallel:5046 comp.lang.misc:9299 comp.compilers:4208
  2908. Newsgroups: comp.parallel,comp.lang.misc,comp.compilers
  2909. Path: iecc!compilers-sender
  2910. From: tuecke@pelican.mcs.anl.gov (Steve Tuecke)
  2911. Subject: PCN v2.0 now available
  2912. Message-ID: <93-02-038@comp.compilers>
  2913. Keywords: tools, parallel, available, FTP
  2914. Sender: compilers-sender@iecc.cambridge.ma.us
  2915. Reply-To: tuecke@pelican.mcs.anl.gov (Steve Tuecke)
  2916. Organization: Argonne National Laboratory, Chicago, Illinois
  2917. Date: Wed, 3 Feb 1993 23:02:16 GMT
  2918. Approved: compilers@iecc.cambridge.ma.us
  2919.  
  2920. We are pleased to announce the release of PCN version 2.0.
  2921.  
  2922. PCN is a parallel programming system designed to improve the productivity
  2923. of scientists and engineers using parallel computers.  It provides a
  2924. simple language for specifying concurrent algorithms, interfaces to
  2925. Fortran and C, a portable toolkit that allows applications to be developed
  2926. on a workstation or small parallel computer and run unchanged on
  2927. supercomputers, and integrated debugging and performance analysis tools.
  2928. PCN was developed at Argonne National Laboratory and the California
  2929. Institute of Technology.  It has been used to develop a wide variety of
  2930. applications, in areas such as climate modeling, fluid dynamics,
  2931. computational biology, chemistry, and circuit simulation.
  2932.  
  2933. PCN can be used to program workstation networks, advanced parallel
  2934. supercomputers like the Intel Touchstone DELTA, and shared-memory
  2935. multiprocessors.  Currently we supply configurations for the following
  2936. machines:
  2937.  
  2938.         Workstation Networks:   Sun 4, NeXT, IBM RS/6000, SGI Iris
  2939.         Multicomputers:         Intel iPSC/860, Intel Touchstone DELTA
  2940.         Shared Memory Machines: Sequent Symmetry running Dynix (not PTX)
  2941.  
  2942. However, PCN is not difficult to port, and we will supply configurations
  2943. for other machines in the future.
  2944.  
  2945.   System components
  2946.   -----------------
  2947.  
  2948. The PCN system consists of several components:
  2949.  
  2950.   * Runtime system: There is a highly portable runtime system that is
  2951. implemented in C.
  2952.  
  2953.   * PCN compiler: The compiler translates PCN programs to a
  2954. machine-independent, low-level form (PCN object code).  An interface to
  2955. the C preprocessor allows macros, conditional compilation constructs, and
  2956. the like to be used in PCN programs.
  2957.  
  2958.   * PCN linker: The PCN linker combines PCN object code (i.e., PCN
  2959. compiler output), foreign object code that is called from PCN (i.e., C or
  2960. Fortran compiler output), libraries, and the PCN run-time system into a
  2961. single executable program.  This permits C and Fortran procedures to be
  2962. integrated seamlessly into PCN programs, and PCN programs to be executed
  2963. similar to programs written in other languages.
  2964.  
  2965.   * Standard libraries: A set of standard libraries provides access to
  2966. Unix facilities (e.g., I/O) and other capabilities.
  2967.  
  2968.   * Virtual Topology tools: These support process mapping on a variety of
  2969. virtual machines, and templates for writing reusable parallel code.
  2970.  
  2971.   * PDB: PDB is the PCN symbolic debugger.  It includes specialized
  2972. support for debugging of concurrent programs.
  2973.  
  2974.   * Gauge: Gauge is an execution profiler for programs written in PCN and
  2975. other languages.  It includes run-time system support for collecting and
  2976. saving profiles, and an X windows based graphical tool for interactive
  2977. exploration of profile data.  It is particularly useful for finding and
  2978. correcting load imbalances and bottlenecks in parallel programs.
  2979.  
  2980.   * Upshot: Upshot is a trace analysis tool for programs written in PCN
  2981. and other languages.  It includes run-time system support for collecting
  2982. and saving traces, and an X windows based graphical tool for interactive
  2983. exploration of trace data.
  2984.  
  2985.   Features
  2986.   --------
  2987.  
  2988. Several features of PCN make it particularly useful for a wide variety of
  2989. parallel programming tasks:
  2990.  
  2991.   * Portability: Because PCN is portable, parallel programs can be
  2992. developed under a friendly (and inexpensive) environment such as a
  2993. workstation.  Once the program is working properly, it can moved with
  2994. little difficulty to different parallel computer targets, such as large
  2995. parallel computers and networks of workstations.
  2996.  
  2997.   * Flexibility: PCN is particularly well suited for the development of
  2998. complex parallel programs involving irregular communication patterns or
  2999. dynamic load balancing.
  3000.  
  3001.   * Rapid prototyping: PCN is an excellent system for the rapid
  3002. prototyping of parallel algorithms.  The combination of high-level
  3003. language and integrated profiling tools make it easy to explore and
  3004. evaluate alternative algorithms and implementation strategies.
  3005.  
  3006.   * Multilingual: PCN programs can call Fortran and C procedures.  This
  3007. allows existing code to be reused within parallel PCN programs.  It also
  3008. allows users to easily expoit advanced Fortran and C compiler technology
  3009. in critical sections of parallel programs.
  3010.  
  3011.   Availability
  3012.   ------------
  3013.  
  3014. PCN is in the public domain.  You can obtain the complete distribution by
  3015. anonymous ftp from:
  3016.  
  3017.     info.mcs.anl.gov
  3018.     /pub/pcn/pcn_v2.0.tar.Z
  3019.  
  3020. The README file in that directory contains a description of exactly what
  3021. is available, including the software distribution, documentation, and
  3022. related papers.
  3023.  
  3024. The PCN distribution contains all source code, installation instructions,
  3025. a users guide in both LateX and Postscript formats, and examples.
  3026.  
  3027.   Documentation
  3028.   -------------
  3029.  
  3030.   * There is a PCN users guide which contains both tutorial and reference
  3031. material:
  3032.  
  3033.     "Parallel Programming with PCN"
  3034.     Ian Foster and Steven Tuecke
  3035.     Argonne National Laboratory Technical Report ANL-91/32 Rev. 2
  3036.  
  3037. This users manual is included in the PCN distribution, and is also
  3038. available separately at the anonymous ftp site mentioned above.  Bound,
  3039. soft-cover copies of this users guide will be available shortly -- send us
  3040. email if you would like a copy.
  3041.  
  3042.   * The following paper provides a good overview of the PCN system and
  3043. examples of how it has been used:
  3044.  
  3045.     "Productive Parallel Programming: The PCN Approach"
  3046.     Ian Foster, Robert Olson, and Steven Tuecke
  3047.     Scientific Programming , 1(1), pp. 51--66.
  3048.  
  3049. A preprint of this paper is available in Postscript form both in the PCN
  3050. distribution and at the anonymous ftp site mentioned above.
  3051.  
  3052.   * The following book is an introductory parallel programming text book
  3053. with all of its examples written in PCN.  It has been used at several
  3054. universities, in conjuction with the PCN system and users manual, to teach
  3055. parallel programming.
  3056.  
  3057.     "An Introduction to Parallel Programming"
  3058.     K. Mani Chandy and Stephen Taylor
  3059.     Jones and Bartlett Publishers
  3060.     ISBN: 0-86720-208-4
  3061.  
  3062.   * Additional references can be found in the PCN users guide.
  3063.  
  3064.   Further Information
  3065.   -------------------
  3066.  
  3067. For further information on PCN, please send email to:
  3068.  
  3069.     pcn@mcs.anl.gov
  3070.  
  3071. Or contact:
  3072.  
  3073.     Ian Foster         or    Steve Tuecke
  3074.     foster@mcs.anl.gov        tuecke@mcs.anl.gov    
  3075.     (708)-252-4619            (708)-252-8711
  3076. -- 
  3077. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3078. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3079.  
  3080.  
  3081. From compilers Wed Feb  3 18:34:20 EST 1993
  3082. Newsgroups: comp.compilers
  3083. Path: iecc!compilers-sender
  3084. From: cam@cat.syr.edu (workshop)
  3085. Subject: CFP: Associative Processing and Applications Workshop
  3086. Message-ID: <93-02-039@comp.compilers>
  3087. Keywords: conference, CFP, parallel
  3088. Sender: compilers-sender@iecc.cambridge.ma.us
  3089. Reply-To: cam@cat.syr.edu (workshop)
  3090. Organization: Syracuse University
  3091. Date: Wed, 3 Feb 1993 23:23:04 GMT
  3092. Approved: compilers@iecc.cambridge.ma.us
  3093.  
  3094.                         CALL FOR PARTICIPATION
  3095.  
  3096.             2ND ASSOCIATIVE PROCESSING AND APPLICATIONS WORKSHOP
  3097.                           Syracuse, New York
  3098.                            July 21-23, 1993
  3099.  
  3100.  
  3101.  
  3102.                              sponsored by
  3103.                  The CASE Center, Syracuse University
  3104.                                  and
  3105.                  Massachusetts Institute of Technology
  3106.  
  3107.  
  3108.  
  3109. Following the success of last year's Associative Processing and
  3110. Applications Workshop, we are pleased to announce the 2nd Workshop which
  3111. will be held at Syracuse University on Wednesday, 21st to Friday, 23rd of
  3112. July 1993.
  3113.  
  3114. This Workshop is intended to bring together researchers in academia and
  3115. industry working on the design, analysis, development, and application of
  3116. massively-parallel associative processing.  The goal of the workshop is to
  3117. promote interaction between researchers interested in the most recent
  3118. technological advances relevant to associative processing.  In addition,
  3119. the format of the workshop will be kept very informal to encourage authors
  3120. to report on work in progress.  Please note that only extended abstracts
  3121. will be required.
  3122.  
  3123. The design of associative processors, due to their highly specialized
  3124. nature, requires an in-depth understanding of the computational
  3125. requirements of the applications of interest in order to create cost
  3126. effective processor architectures.  It is the identification of the
  3127. relationships between applications and associative processor architecture
  3128. that has and will continue to determine how new or improved technologies
  3129. will influence and be used in further processor developments.
  3130. Consequently, papers that deal with large applications, programming
  3131. paradigms, machine prototypes, and modeling techniques are of particular
  3132. interest.
  3133.  
  3134. Areas of interest include, but are not limited to:
  3135.  
  3136. * applications - either implemented, or under development
  3137. * software models of associative processors - functional, stochastic, etc.
  3138. * architectures - simulated or experimental results from chips to
  3139.                   entire systems, tradeoff studies
  3140. * physical design - CAM cell design, CAM chip design, silicon compilation
  3141. * interfaces - von Neumann/associative, special controllers, etc.
  3142. * algorithm analysis - time complexity, hardware requirements
  3143. * programming paradigms - software development environments, tools, and
  3144.                           languages
  3145. * program mapping - techniques for compiling high level languages
  3146.                     to associative machines
  3147.  
  3148.  
  3149. Attendance will be limited to approximately fifty (50) people to insure
  3150. time for excellent interaction between workshop participants.
  3151.  
  3152. SUBMISSIONS:
  3153.  
  3154. Authors are invited to send six (6) copies of an extended abstract by May
  3155. 8, 1993.  Abstracts are restricted to no more than 5 double-spaced pages
  3156. (1500 words), not including bibliography or figures.  Abstracts must
  3157. include a cover letter with the following information: title of paper,
  3158. full names of authors, postal addresses and email-addresses of the
  3159. authors, and keywords indicative of the theme of the paper.  The abstracts
  3160. will be refereed, and the authors will be notified of acceptance by June
  3161. 5, 1993.  As the format of this workshop will be informal, full length
  3162. papers, although encouraged, are not required.  Accepted abstracts will be
  3163. duplicated and distributed to all participants at the workshop.
  3164.  
  3165. All submissions and inquiries for further information should be directed
  3166. to:
  3167.  
  3168.          Kirk Twardowski
  3169.          CASE Center, Syracuse University
  3170.          2-212 Center for Science and Technology
  3171.          Syracuse, NY 13244-4100
  3172.          315/443-4122
  3173.          cam@cat.syr.edu
  3174.  
  3175.                    WORKSHOP LOCATION and FEE
  3176.  
  3177. The workshop will be held at the CASE center, which is located in the
  3178. Center for Science and Technology on the Syracuse University campus.  The
  3179. cost will be $85 per attendee, and includes:
  3180.  
  3181. * "Get-Acquainted" reception on July 21st
  3182. * Luncheon on July 22nd
  3183. * Refreshments
  3184. * Copy of abstracts
  3185.  
  3186.  
  3187.                    PROGRAM COMMITTEE
  3188.  
  3189. Bruce Berra, CASE Center/SU
  3190. Dave Bezek, IBM/Owego
  3191. Geoffrey Fox, NPAC/SU
  3192. Eby Friedman, University of Rochester
  3193. J. Storrs Hall, Rutgers University
  3194. John Oldfield, Syracuse University
  3195. Behrooz Parhami, University of California
  3196. Jerry Potter, Kent State University
  3197. Charles Sodini, MIT
  3198. Chuck Stormon, Coherent Research Inc.
  3199. Klaus Waldschmidt, Johann Wolfgang Goethe Universitaet
  3200. -- 
  3201. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3202. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3203.  
  3204.  
  3205. From compilers Thu Feb  4 08:51:31 EST 1993
  3206. Newsgroups: comp.compilers
  3207. Path: iecc!compilers-sender
  3208. From: modrall@world.std.com (Mark W Modrall)
  3209. Subject: optimization/code quality
  3210. Message-ID: <93-02-040@comp.compilers>
  3211. Keywords: architecture, optimize
  3212. Sender: compilers-sender@iecc.cambridge.ma.us
  3213. Reply-To: modrall@world.std.com (Mark W Modrall)
  3214. Organization: Compilers Central
  3215. References: <93-01-180@comp.compilers> <93-02-021@comp.compilers>
  3216. Date: Wed, 3 Feb 1993 14:53:21 GMT
  3217. Approved: compilers@iecc.cambridge.ma.us
  3218.  
  3219. >There's a rather large switch inside, and the compiler manages to mess up
  3220. >its table, and generate eronous code, or backend failures. Which get fixed
  3221. >once in a while by using level 3 optimisation. (Hence I knew the time.)
  3222. >Supposedly GCC has some of the same features, most compilers are not very
  3223. >often exersized at the nopt. level and have relatively more bugs in that
  3224. >part.
  3225.  
  3226. One of my favorite compiler experiences was with the compiler on a
  3227. Concurrent system... when you turned on level 3 optimization, you would
  3228. occasionally see a diagnostic message pop up during compilation "I-Overuse
  3229. of registers, see manual for more information"
  3230.  
  3231. Well, none of the resultant code worked... i saw that message, and said
  3232. "it's informational, that can't be it."  finally, at the end of my rope, I
  3233. looked at the manual for more information, and the note said, basically,
  3234. "We didn't get this level of optimization right.  It generates bad code."
  3235.  
  3236. I called up Concurrent and filed a bug report that read "User is appalled
  3237. by the classification of this error message."
  3238.  
  3239. -mark
  3240. -- 
  3241. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3242. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3243.  
  3244.  
  3245. From compilers Thu Feb  4 08:54:51 EST 1993
  3246. Newsgroups: comp.compilers
  3247. Path: iecc!compilers-sender
  3248. From: vern@horse.ee.lbl.gov (Vern Paxson)
  3249. Subject: Re: justify use of flex vs. lex - summary
  3250. Message-ID: <93-02-041@comp.compilers>
  3251. Keywords: lex, comment
  3252. Sender: compilers-sender@iecc.cambridge.ma.us
  3253. Reply-To: vern@horse.ee.lbl.gov (Vern Paxson)
  3254. Organization: Lawrence Berkeley Laboratory, Berkeley CA
  3255. References: <93-02-022@comp.compilers>
  3256. Date: Thu, 4 Feb 1993 03:44:22 GMT
  3257. Approved: compilers@iecc.cambridge.ma.us
  3258.  
  3259. swl26@cas.org (Steve Layten x3451) writes:
  3260. > one person ... suggested that I look at PCCTS:
  3261. > ... you can use it for commercial products without violating its notice,
  3262. > which explicitly permit use for commerical or proprietary software (both
  3263. > prohibited by bison&flex's copyright).
  3264.  
  3265. Just to keep the record straight (as this point often gets confused),
  3266. while bison is covered by the GPL, flex is not; it's covered by the BSD
  3267. copyright, which freely permits use in commerical and proprietary software
  3268. (so does the GPL, actually, as long as source code is made available).
  3269. Furthermore, scanners *generated* by flex are not covered by any sort of
  3270. copyright (again, unlike bison-generated parsers).  You can do whatever
  3271. you like with them.  So Basile's final point above is incorrect.
  3272.  
  3273.         Vern
  3274.  
  3275.     Vern Paxson                vern@ee.lbl.gov
  3276.     Systems Engineering                ucbvax!ee.lbl.gov!vern
  3277.     Lawrence Berkeley Laboratory        (510) 486-7504
  3278. [For yacc users for whom the GPL is a problem, Berkeley yacc is in the
  3279. public domain, meaning you can do anything with it you want. -John]
  3280. -- 
  3281. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3282. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3283.  
  3284.  
  3285. From compilers Thu Feb  4 08:55:55 EST 1993
  3286. Newsgroups: comp.compilers
  3287. Path: iecc!compilers-sender
  3288. From: Michael John Haertel <mike@skinner.cs.uoregon.edu>
  3289. Subject: Re: Thompson's 2c vs. gcc
  3290. Message-ID: <93-02-042@comp.compilers>
  3291. Keywords: architecture, GCC
  3292. Sender: compilers-sender@iecc.cambridge.ma.us
  3293. Reply-To: Michael John Haertel <mike@skinner.cs.uoregon.edu>
  3294. Organization: Compilers Central
  3295. References: <93-01-205@comp.compilers> <93-02-030@comp.compilers>
  3296. Date: Thu, 4 Feb 1993 04:02:03 GMT
  3297. Approved: compilers@iecc.cambridge.ma.us
  3298.  
  3299. In a moment of wonderful insight that may have cleared this whole matter
  3300. up, Preston Briggs wrote:
  3301.  
  3302. >Is 2c the same compiler that Thompson writes about in his paper "A New C
  3303. >Compiler"?  Very well.
  3304. > [ ... ]
  3305. >Thompson's comparisons with lcc were conducted on the MIPS.  It seems
  3306. >reasonable that his remarks about gcc reflect the (at the time) poor
  3307. >implementation of gcc on the MIPS.
  3308.  
  3309. Yes, 2c is the *68020* version of Thompson's compiler.  The MIPS version
  3310. is called vc.  The informal comparisons I conducted were 2c compared with
  3311. gcc on a 68020.
  3312.  
  3313. I hadn't realized, or had forgotten, that Thompson had conducted his
  3314. comparisons on the MIPS.  The MIPS port of gcc version 1.x was certainly
  3315. not well tuned.
  3316.  
  3317. I think this explains everything.
  3318. -- 
  3319. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3320. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3321.  
  3322.  
  3323. From compilers Thu Feb  4 08:57:00 EST 1993
  3324. Newsgroups: comp.compilers
  3325. Path: iecc!compilers-sender
  3326. From: manningc@procor.dialogic.com (Charles Manning)
  3327. Subject: PIC 16Cxx Compilers
  3328. Message-ID: <93-02-043@comp.compilers>
  3329. Keywords: tools
  3330. Sender: compilers-sender@iecc.cambridge.ma.us
  3331. Reply-To: manningc@procor.dialogic.com (Charles Manning)
  3332. Organization: Compilers Central
  3333. References: <93-02-015@comp.compilers>
  3334. Date: Thu, 4 Feb 1993 16:48:02 GMT
  3335. Approved: compilers@iecc.cambridge.ma.us
  3336.  
  3337. >I'm looking for a compiler for the PIC 16C5x series of microprocessors.
  3338.  
  3339. I've had a bit of experience with PICs and HLL's on other
  3340. microcontrollers.  Sorry, but I don't think HLL's are feasible for PIC
  3341. 16Cxx family.
  3342.  
  3343. Even shoehorning C into a 8051 has taken the industry quite a while to get
  3344. anywhere near to useful.  In case you don't know it, it has 64kbyte
  3345. external RAM 64kbyte ROM 128bytes RAM etc.
  3346.  
  3347. If you can't abide the PIC assembler (I hated it at first, but I quite
  3348. like it now) there is always the Parallax development kit for PIC16C5x.
  3349.  
  3350. The Parallax assembler is easier for most people to read but the parallax
  3351. "instructions" may generate more than one PIC instruction.
  3352.  
  3353. Apparently the Parallax stuff is available on their BBS (916) 721-9607.
  3354.  
  3355. Regards
  3356. Charles Manning
  3357.  
  3358. manningc@dialogic.com
  3359. -- 
  3360. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3361. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3362.  
  3363.  
  3364. From compilers Thu Feb  4 08:59:26 EST 1993
  3365. Newsgroups: comp.compilers
  3366. Path: iecc!compilers-sender
  3367. From: schrod@iti.informatik.th-darmstadt.de (Joachim Schrod)
  3368. Subject: Re: yytext in POSIX lex
  3369. Message-ID: <93-02-044@comp.compilers>
  3370. Keywords: lex, comment
  3371. Sender: compilers-sender@iecc.cambridge.ma.us
  3372. Reply-To: schrod@iti.informatik.th-darmstadt.de (Joachim Schrod)
  3373. Organization: TH Darmstadt, FG Systemprogrammierung
  3374. References:  <93-02-035@comp.compilers>
  3375. Date: Thu, 4 Feb 1993 11:32:23 GMT
  3376. Approved: compilers@iecc.cambridge.ma.us
  3377.  
  3378. The moderator writes:
  3379. > [Of the two major implementations of lex, AT&T lex makes yytext an array
  3380. > and flex makes it a pointer.  Some poorly written lexers depend on it
  3381. > being one or the other, and %array and %pointer make it easier to port
  3382. > such code.  You have to try fairly hard to tell the difference, e.g. use
  3383. > sizeof(yytext). -John]
  3384.  
  3385. Hmm, I see this a bit different.
  3386.  
  3387. If the element type of yytext is "unsigned char" and your default char
  3388. attribute is "signed char", an ANSI C compiler will complain if you call
  3389. strcpy (even worse, a C++ compiler will signal an error).  So, a common
  3390. technique is to define a variable s_yytext (here `s' stands for `string',
  3391. not for `signed') which happens to have the same value as yytext but with
  3392. an element type of "char" (ie, it's "char *").
  3393.     If yytext is an array, this variable may be initialized once (may even
  3394. be "const"), if yytext is a pointer, it must be initialized anew before
  3395. each action. (In the latter case one needs something like the
  3396. YY_USER_ACTION of flex.)
  3397.  
  3398. I want to emphasize that (for me) this has nothing to do with %array and
  3399. %pointer in the first place -- it's a note concerning the opinion from
  3400. above that the difference between array and pointer implementations is
  3401. only noticable in ``bad'' lexers. It's visible in lexers which have C++
  3402. actions.
  3403.  
  3404. Btw, I've checked POSIX.2 about the `official element type' of yytext. The
  3405. phrase ``yytext is either an external character array or a pointer to a
  3406. character string'' might be open to interpretation. :-(
  3407.     When I'm about it, I want to mention another problem with lex for
  3408. POSIX.1 based software (since this belongs more to the subject of this
  3409. thread :) Many systems (eg, AIX and HP-UX) support more than one
  3410. `standard', and select the appropriate system by some cpp macros when the
  3411. first system include file is read in. Now POSIX demands that I shall add a
  3412. "#define _POSIX_SOURCE" to my source (at the very front, of course), and
  3413. promises me that I will receive a POSIX.1 environment then. Nice -- but
  3414. this does not happen in lex sources. Here I have to give -D_POSIX_SOURCE
  3415. (or -D_XOPEN_SOURCE or whatever I want) on the command line of the C
  3416. compiler. (Which is normally never called by me, but by some
  3417. make/imake/or-similar tool...) If I forget this I will have a plain ANSI C
  3418. environemnt -- without any further function or type declarations.
  3419. <Grmpfh>.
  3420.  
  3421. --
  3422. Joachim Schrod            Email: schrod@iti.informatik.th-darmstadt.de
  3423. Computer Science Department
  3424. Technical University of Darmstadt, Germany
  3425. [I'd #define s_yytext as ((char *) yytext) if that were a problem. -John]
  3426. -- 
  3427. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3428. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3429.  
  3430.  
  3431. From compilers Thu Feb  4 23:56:14 EST 1993
  3432. Newsgroups: comp.compilers
  3433. Path: iecc!compilers-sender
  3434. From: alsalqan@bert.eecs.uic.edu
  3435. Subject: CFP:  IEEE Int'l Conf. on Requirement Engineering
  3436. Message-ID: <93-02-045@comp.compilers>
  3437. Keywords: CFP
  3438. Sender: compilers-sender@iecc.cambridge.ma.us
  3439. Reply-To: ckchang@bert.eecs.uic.edu
  3440. Organization: University of Illinois at Chicago
  3441. Date: Thu, 4 Feb 1993 17:03:44 GMT
  3442. Approved: compilers@iecc.cambridge.ma.us
  3443.  
  3444.  IEEE INTERNATIONAL CONFERENCE ON REQUIREMENTS ENGINEERING
  3445. An IEEE Software Technology Transfer Conference
  3446.  
  3447. April 18-22, 1994
  3448.  
  3449. Colorado Springs, Colorado, USA -- and -- Taipei, Taiwan, ROC
  3450.  
  3451. Sponsored by IEEE Computer Society
  3452. Association Pending with AIAA, MCI, CITTI, and Taiwan Minister of
  3453. Telecommunications
  3454.  
  3455. C  A  L  L    F  O  R    P  A  P  E  R  S
  3456.  
  3457. ICRE '94 is a new international conference designed to offer an
  3458. opportunity for requirements engineering practitioners and researchers to
  3459. exchange experiences and new technology.  The conference offers high
  3460. quality paper and panel sessions, tutorials, keynote speakers, and a
  3461. practical workshop.  The conference will have three areas of focus:
  3462.  
  3463. o    Experiences, problems and recommendations of and for practitioners
  3464. o    Research results ripe for exploitation (i.e., "ripe fruits" of
  3465.     technology)
  3466. o    Research with long term goals
  3467.  
  3468. Topics within requirements engineering include, but are not limited to:
  3469.  
  3470. o    Case Studies
  3471. o    Requirements Capture and/or Analysis
  3472. o    Requirements Reuse
  3473. o    Principles, Appoaches and Standards
  3474. o    Animation and Prototyping
  3475. o    Req'ts Specification and/or Validation
  3476. o    Taxonomies of Requirements
  3477. o    Philosophical and Social Underpinnings
  3478. o    Multiple Views of Requirements
  3479. o    Requirements Engineering Environments
  3480. o    Requirements Process Models
  3481. o    Representations, Languages and Notations
  3482. o    Issues, Problem Areas and Recommendations by Practitioners
  3483.  
  3484. Send seven copies of papers (4000 to 6000 words including a 150 word
  3485. abstract) or panel proposals (1 to 2 page discussion plus panel member
  3486. names) to:
  3487.  
  3488. >From North and South America, and Europe:    From Asia, Africa, Australia, and
  3489. Pacific:
  3490. Dr. Pei Hsia                     Dr. Chyan-Goei Chung
  3491. ICRE Program Co-Chair                 ICRE Program Co-Chair
  3492. University of Texas at Arlington         National Chiao Tung University
  3493. Computer Science and Engineering Dept         Computer Science and
  3494.                          Info. Eng'g Dept
  3495. Box 19015                     1001 Ta Hsueh Rd
  3496. Arlington, TX 76019-0015 USA             Hsin-chu, Taiwan 30050 ROC
  3497. phone:  (817) 273-3785
  3498. email:  hsia@cse.uta.edu
  3499.  
  3500.  
  3501. Key Dates:
  3502.  
  3503. Paper Submissions and Panel Proposals Due        August 6, 1993
  3504. Authors Notified of Acceptance                October 18, 1993
  3505. Final Camera-Ready Manuscripts Due            December 15, 1993
  3506.  
  3507. This conference will be held simultaneously in Taipei and Colorado
  3508. Springs, with live satellite broadcasts in both directions.  Please
  3509. indicate with your submission: (1) principal author's affiliation,
  3510. address, telephone, FAX, and email, (2) preferred presentation location
  3511. (U.S. or Taiwan), and (3) the conference focus most appropriate for your
  3512. submission (current experience, ripe fruit, or long-term research).
  3513. **************************
  3514. The best papers of the conference will receive special recognition and
  3515. will be recommended for publication in a major software journal.
  3516.  
  3517.  
  3518. Steering Committee:
  3519.  
  3520. H. Black        I. Ho
  3521. C. Chang        P. Hsia
  3522. A. Davis        J. Siddiqi
  3523. M. Dorfman
  3524.  
  3525.  
  3526. Conference Co-Chairs:
  3527.  
  3528. Alan M. Davis
  3529. University of Colorado
  3530. Colorado Springs, CO
  3531. 80933-7150
  3532. phone: (719) 593-3695
  3533. email:  adavis@zeppo.uccs.edu
  3534.  
  3535. General Yun Kuo
  3536. Institute for Information Technology
  3537. 116 Nanking E. Rd.; Sec 2; 12 Floor
  3538. Taipei, Taiwan
  3539. phone: (02) 581-5868
  3540.  
  3541.  
  3542. Workshop Chair:
  3543.  
  3544. Jawed Siddiqi
  3545. Sheffield City Polytechnic
  3546. Napier St.
  3547. Sheffield, SI IWB, UK
  3548. email:  J.I.Siddiqi@sheffield-hallam.ac.uk
  3549.  
  3550.  
  3551. Registration Chair:
  3552.  
  3553. Kerry Baugh
  3554. University of Colorado
  3555. Colorado Springs, CO
  3556. 80933-7150
  3557.  
  3558.  
  3559. Program Co-Chairs:
  3560.  
  3561. Pei Hsia
  3562. Chyan-Goei Chung
  3563.  
  3564.  
  3565. Program Committee:
  3566.  
  3567. S. Andriole        I. P. Lin
  3568. E. Bersoff        Luqi
  3569. H. Black        T. Nakajima
  3570. J. Brackett        C. Potts
  3571. C. Chang        C. Ramamoorthy
  3572. J. Y. Chen        W. Royce
  3573. P. Coad            C. Shekaran
  3574. M. Dorfman        J. Siddiqi
  3575. S. Fickas        C. Singer
  3576. A. Finkelstein        R. Thayer
  3577. S. Gerhart        J. Tsai
  3578. I. Ho            G. Wittenstein
  3579. S. Isoda        J. Wood
  3580. K. Jordan        R. Yeh
  3581. D. Kung            G. Zelesnik
  3582. -- 
  3583. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3584. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3585.  
  3586.  
  3587. From compilers Thu Feb  4 23:57:38 EST 1993
  3588. Newsgroups: comp.compilers
  3589. Path: iecc!compilers-sender
  3590. From: alsalqan@bert.eecs.uic.edu
  3591. Subject: Review and Registration: Petri Nets '93 /Chicago
  3592. Message-ID: <93-02-046@comp.compilers>
  3593. Keywords: conference
  3594. Sender: compilers-sender@iecc.cambridge.ma.us
  3595. Reply-To: murata@bert.eecs.uic.edu
  3596. Organization: University of Illinois at Chicago
  3597. Date: Thu, 4 Feb 1993 17:23:09 GMT
  3598. Approved: compilers@iecc.cambridge.ma.us
  3599.  
  3600. **************************************************
  3601.         PREVIEW AND REGISTRATION
  3602.         PETRI NETS 1993  / Chicago
  3603.  
  3604.     14th International Conference on Application and Theory
  3605.     of Petri Nets, June 21-25, 1993, Bismark Hotel, Chicago
  3606.  
  3607.         MONDAY, JUNE 21, 1993
  3608.         The following three parallel sessions:
  3609.  
  3610. 1. Introductory Tutorial I:
  3611.     Informal Intro. to Petri Nets (W. Reisig),
  3612.     Elementary Net Systems I (G. Rozenberg),
  3613.     Place /Transition Nets I (W. Reisig),
  3614.     High-Level Nets I (K. Jensen),
  3615.     Timed & Stochastic nets I (M. Ajmone Marsan)
  3616.  
  3617. 2. Advanced Practical Tutorial:
  3618.     Petri Nets, Artificial Intelligence and their Application
  3619.     to Computer Integrated Manufacturing (R. Valette)
  3620.  
  3621. 3.  Oral presentation of the tools that will be exhibited
  3622.     throughout the conference: (open to all participants)
  3623.  
  3624.         TUESDAY, JUNE 22, 1993
  3625.         The following four parallel sessions:
  3626.  
  3627. 1. Introductory Tutorial II:
  3628.     Elementary Net Systems II (G.Rozenberg),
  3629.     Place /Transition Nets II (M. Silva),
  3630.     High-Level Nets II (K. Jensen),
  3631.     Intro. to GSPNs (M. Ajmone Marsan),
  3632.     Levels of Petri Nets (H. J. Genrich)
  3633.  
  3634. 2. Advanced Theoretical Tutorial:
  3635.     The Relationships between different Models of Concurrency
  3636.     (M. Nielsen)
  3637.  
  3638. 3.  Case Studies Tutorials:
  3639.     Asynchronous Circuit Design
  3640.     (R. Shapiro, Meta Software)
  3641.     Simulation of Communication Protocols
  3642.     (M. Ajmone Marsan, Politecnico di Torino)
  3643.     Work Flow Analysis of Business Processes
  3644.     (V. Pinci, Meta Software)
  3645.     Reliability Modelling of a Heterogeneous
  3646.     Multiprocessor (K. Trivedi, Duke University)
  3647.  
  3648. 4. One-Day (Tuesday, June 22) Workshop on Computer
  3649.     Supported Cooperative Work: Petri Nets and Related
  3650.     Formalisms. To register for this workshop, circle YES in the
  3651.     conference registration form.) For details, contact De Michelis
  3652.     (gdemich@hermes.dsi.unimi.it) or  Ellis (skip@cs.colorado.edu).
  3653.  
  3654.     WEDNESDAY, JUNE 23 TO FRIDAY, JUNE 25
  3655.     A single session of presentation of regular papers as well
  3656.     as the following three invited talks:
  3657.  
  3658. 1. Groupware and Concurrency Modeling
  3659.     (Clarence Ellis, University of Colorado )
  3660.  
  3661. 2. Applications of Qualitative and Quantitative Structural
  3662.     Analysis of Net Models ( Manuel Silva, Univ. of Zaragoza)
  3663.  
  3664. 3. Petri Nets with Continuous-State Marking Processes
  3665.     (Kishor S. Trivedi, Duke University)
  3666.  
  3667.         Social Programs
  3668.     Informal gathering, 6-7 pm on Tuesday, June 22
  3669.     Conference Reception & Banquet on Thursday, June 24
  3670.     (Optional Informal Dinner-Excursion on Friday Evening,
  3671.     June 25, if there is enough interest.)
  3672.  
  3673.     For the complete tutorial and conference program, contact Murata
  3674.     or Shatz via fax (312) 413-0024 or via e-mail: pn93@eecs.uic.edu.
  3675.  
  3676. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3677. REGISTRATION FORM
  3678.  
  3679. To register, return this form to
  3680.  
  3681.     PETRI NETS 1993 Registrar
  3682.     UIC Conferences and Institutes (M/C 607)
  3683.     1033 W. Van Buren St., Suite 700N, 7th Floor
  3684.     Chicago, IL, 60607 USA
  3685.  
  3686. With credit card payment, you can register by
  3687. Phone (312) 996-5225 or FAX (312) 996-5227,
  3688. but not via e-mail.
  3689.  
  3690. Please type or print
  3691. Last Name ___________________ First Name _______________
  3692. Organization _________________________________________
  3693. Address _____________________________________________
  3694. ___________________________________________________
  3695. ___________________________________________________
  3696. Phone: _____________________ Fax: ____________________
  3697. E-mail: _____________________________________________
  3698. (If you don't want your phone #, etc. to appear on
  3699. the participant list, please so indicate.)
  3700.  
  3701. Please circle membership information, as appropriate.
  3702. I am a member of: ACM AFCET AICA  BCS  EATCS  GI  IEEE.
  3703.  
  3704. I wish to register for the following:
  3705.  
  3706. ___ Two-Day Tutorial, June 21-22   Fees (Check one):
  3707. Member (by May 24) ___$300, (after May 24) ____$350;
  3708. Non-Members (by May 24) ___$320, (after May 24) ___$370
  3709.  
  3710.     Check which session you plan to attend each day
  3711.         Monday, June 21 (check one)
  3712.         _____ Introductory I
  3713.         _____ Advanced Practical
  3714.  
  3715.         Tuesday June 22 (check one)
  3716.         _____ Introductory II
  3717.         _____ Advanced Theory
  3718.         _____ Case Studies
  3719.  
  3720. ___ Three-Day Conference (June 23-25)  Fees (Check one):
  3721. Member (by May 24) ___$395, (after May 24) ___$445;
  3722. Non-Members (by May 24) ___$415, (after May 24) ___$465
  3723.  
  3724. Do you wish to register for the workshop, "Computer Supported
  3725. Cooperative Work: Petri Nets and Related Formalisms", on June 22?
  3726. (Circle one)  YES   NO
  3727. (Note: To register for this workshop, you must
  3728. also be registered for the conference.)
  3729.  
  3730. __ Additional/guest banquet tickets  Number __@ $45 each = $____
  3731.  
  3732. Total Payment Enclosed $______________________________
  3733.  
  3734. PAYMENT METHOD:___ Check or money order, payable to
  3735.         the University of Illinois - PETRI NETS 1993.
  3736. U.S. currency only. Funds must be drawn on a U.S. bank; or
  3737.  
  3738. __ Discover   __ MasterCard   __ Visa Exp. Date ____/______
  3739. Credit Card Number ___________________________________
  3740. Cardholder's Signature _________________________________
  3741.  
  3742. Refunds, less $25 processing fee, available for requests received
  3743. in writing by June 5, 1993.
  3744. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3745.     MAKE YOUR OWN ROOM RESERVATIONS
  3746. by June 5, 1993 at
  3747.  
  3748.      The Bismark Hotel,
  3749.      171 W. Randolph Street
  3750.      Chicago  Illinois 60601, U.S.A.
  3751.  
  3752.      FAX (312) 236-3177
  3753.      Phone (312) 236-0123,
  3754.      Outside Chicago, but within Continental U.S. 1-800-643-1500
  3755.  
  3756. Ask for special Petri Nets '93 rates:
  3757. $65 Single, $75 Double, $85 Triple, $95 Quad.
  3758. Identify yourself as a participant in Petri Nets' 93.
  3759. -- 
  3760. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3761. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3762.  
  3763.  
  3764. From compilers Thu Feb  4 23:58:53 EST 1993
  3765. Newsgroups: comp.compilers
  3766. Path: iecc!compilers-sender
  3767. From: Frank.Tip@cwi.nl (Frank Tip)
  3768. Subject: program slicing?
  3769. Message-ID: <93-02-047@comp.compilers>
  3770. Keywords: question
  3771. Sender: compilers-sender@iecc.cambridge.ma.us
  3772. Organization: CWI, Amsterdam
  3773. Date: Thu, 4 Feb 1993 17:38:07 GMT
  3774. Approved: compilers@iecc.cambridge.ma.us
  3775.  
  3776. Hello,
  3777.  
  3778. I am interested in static and dynamic program slicing techniques.  If
  3779. you know of any references, please let me know (by E-mail).
  3780.  
  3781. I'll post a summary of these responses later.
  3782.  
  3783.                                 Frank Tip.
  3784. -- 
  3785. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3786. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3787.  
  3788.  
  3789. From compilers Fri Feb  5 00:00:37 EST 1993
  3790. Newsgroups: comp.compilers
  3791. Path: iecc!compilers-sender
  3792. From: cliffc@rice.edu (Cliff Click)
  3793. Subject: Re: Compiler construction in C++ and OOD
  3794. Message-ID: <93-02-048@comp.compilers>
  3795. Keywords: C++, OOP
  3796. Sender: compilers-sender@iecc.cambridge.ma.us
  3797. Organization: Center for Research on Parallel Computations
  3798. References: <93-02-032@comp.compilers>
  3799. Date: Thu, 4 Feb 1993 18:49:10 GMT
  3800. Approved: compilers@iecc.cambridge.ma.us
  3801.  
  3802. vivek@sequent.com (Vivek Buzruk) writes:
  3803.  
  3804. > Till now I thought a compiler is not a good application for O-O design.
  3805.  
  3806. > I will be happy if any one tells whether any complete compiler is written
  3807. > in C++ either. Also in what way C++ is used, only as a better C or flavor
  3808. > of OOD.
  3809.  
  3810. My research compiler is written entirely in C++ (except for the front-end
  3811. parsing stuff).  I find the O-O issues immensely helpful.  I have class
  3812. definitions for all the interesting internal data structures: hash tables,
  3813. symbol tables, instructions, etc.  The complexity control C++ gives me is
  3814. a BIG win.
  3815.  
  3816. Of course, I'm in the minority here at Rice.  Most of the previous work
  3817. has been done in C.  A newer project (1 yr old or so) has been started in
  3818. C, but with design decisions that strongly mirror O-O design.
  3819.  
  3820. > Obviously one can not go away from traditional phase structured design
  3821. > to define the functionality of a compiler.
  3822.  
  3823. Hummm... I would disagree with this statement - and don't see what it has
  3824. to do with O-O design of a compiler.
  3825.  
  3826. >   -- Vivek -> vivek@gateway.sequent.com
  3827.  
  3828. Cliff Click                                            cliffc@cs.rice.edu
  3829. -- 
  3830. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3831. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3832.  
  3833.  
  3834. From compilers Fri Feb  5 00:05:30 EST 1993
  3835. Newsgroups: comp.compilers
  3836. Path: iecc!compilers-sender
  3837. From: jbuck@forney.berkeley.edu (Joe Buck)
  3838. Subject: Re: Thompson's 2c vs. gcc
  3839. Message-ID: <93-02-049@comp.compilers>
  3840. Keywords: architecture, GCC
  3841. Sender: compilers-sender@iecc.cambridge.ma.us
  3842. Organization: U. C. Berkeley
  3843. References: <93-01-205@comp.compilers> <93-02-042@comp.compilers>
  3844. Date: Thu, 4 Feb 1993 18:57:31 GMT
  3845. Approved: compilers@iecc.cambridge.ma.us
  3846.  
  3847. Michael John Haertel <mike@skinner.cs.uoregon.edu> writes:
  3848. >I hadn't realized, or had forgotten, that Thompson had conducted his
  3849. >comparisons on the MIPS.  The MIPS port of gcc version 1.x was certainly
  3850. >not well tuned.
  3851.  
  3852. It wasn't just that it was not well tuned.  gcc-1 did not have an
  3853. instruction scheduler and could not fill delayed branch slots.  gcc-2 does
  3854. both.  I understand that this makes a difference of about 30% on the
  3855. Sparc; the number is probably similar on the MIPS.  gcc-1 did a good job
  3856. on the CISC architectures (Vax and 680x0) it was initially designed for.
  3857. --
  3858. Joe Buck    jbuck@ohm.berkeley.edu
  3859. -- 
  3860. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3861. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3862.  
  3863.  
  3864. From compilers Fri Feb  5 00:16:58 EST 1993
  3865. Newsgroups: comp.compilers
  3866. Path: iecc!compilers-sender
  3867. From: rms@gnu.ai.mit.edu (Richard Stallman)]
  3868. Subject: Adding other languages to GCC (was, using GCC for back-end)
  3869. Message-ID: <93-02-050@comp.compilers>
  3870. Posted-By: davids@ICSI.Berkeley.EDU (David Petrie Stoutamire)
  3871. Keywords: GCC
  3872. Sender: compilers-sender@iecc.cambridge.ma.us
  3873. Organization: International Computer Science Institute, Berkeley, CA, U.S.A.
  3874. References: <93-02-011@comp.compilers>
  3875. Date: Thu, 4 Feb 1993 21:25:56 GMT
  3876. Approved: compilers@iecc.cambridge.ma.us
  3877.  
  3878. The right way to add a new language front end to GCC is to make it
  3879. generate the not-quite-syntax-tree data structure defined in tree.h.  That
  3880. is the input to the language-independent part of GCC.  You should not try
  3881. to make RTL directly.
  3882.  
  3883. To do this, you must understand that part of GCC.  But if you can write a
  3884. compiler, you can do that.
  3885.  
  3886. For a front end to generate RTL is undesirable because it is unmodular.
  3887. How to generate RTL depends on the target machine in complex ways.  You
  3888. should leave that to the code which already does it.  The tree data
  3889. structure is machine-independent aside from a few storage layout
  3890. parameters.
  3891.  
  3892. The idea of reading this RTL from a file is even worse.  First, the RTL
  3893. chain is not the only information that the compiler needs.  So this is far
  3894. from the simple task you might imagine.  But even if you did make it work,
  3895. reading the RTL woulkd be very slow.  It is just dumb to make the parser
  3896. communicate with the rest of the compiler by passing text through a file.
  3897.  
  3898. The right solution is to put the parser in the same process as the rest of
  3899. the compiler, and make it generate trees.  This is what the front ends for
  3900. Pascal, Fortran, and Ada do.
  3901.  
  3902. There is no good documentation for the tree data structure.  If someone
  3903. wants to write documentation and give it to the FSF, that would be useful.
  3904. -- 
  3905. Send compilers articles to compilers@iecc.cambridge.ma.us or
  3906. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  3907.  
  3908.  
  3909. From compilers Fri Feb  5 00:18:52 EST 1993
  3910. Newsgroups: comp.compilers
  3911. Path: iecc!compilers-sender
  3912. From: Anthony Naggs <AMN@VMS.BRIGHTON.AC.UK>
  3913. Subject: Re: Compilers for Microchip PIC16C5x
  3914. Message-ID: <93-02-051@comp.compilers>
  3915. Keywords: tools
  3916. Sender: compilers-sender@iecc.cambridge.ma.us
  3917. Organization: Compilers Central
  3918. References: <93-02-015@comp.compilers>
  3919. Date: Fri, 5 Feb 1993 01:25:00 GMT
  3920. Approved: compilers@iecc.cambridge.ma.us
  3921.  
  3922. Foster Schucker, <foster@nzkite.uucp>, writes:
  3923. > I'm looking for a compiler for the PIC 16C5x series of microprocessors.
  3924. >
  3925. > I'd prefer C or Pascal, hosted on MS-DOS but beggars can't be choosers.
  3926.  
  3927. I was interested in this last September, so I contacted Arizona Microchip
  3928. in the UK.  They directed me to a company, (only five miles up the road
  3929. from me!), who are UK agents for:
  3930.  
  3931.     CC5X Small C Cross Compiler for the Microchip PIC16C5x Family
  3932.  
  3933.     From: B. Knudsen Data       Fax: +47 7 94 25 90
  3934.           Stubbanv. 33B
  3935.           7037 Trondheim
  3936.           NORWAY
  3937.  
  3938. Well, I managed to find the information sheet, but I have mislaid the demo
  3939. disk & pricing details.
  3940.  
  3941. I considered the 'Small C' to be too small and expensive, also (IMHO) the
  3942. code generator seemed to be rather poor.
  3943.  
  3944. The [Arizona] Microchip distributor in your area should be upto date on
  3945. the available tools.
  3946.  
  3947. > The Microchip PIC 16C5x series of microprocessors is a small (18-28 pin)
  3948. > chip with 33 instructions, a 12 bit word, with 2K of EPROM.  ...
  3949.  
  3950. They are very neat, I have used them in several projects.  Also parts
  3951. introduced around last October include E^2 data retention and on-chip
  3952. ADCs.  Motorola apparently introduced their 'insect' series of small
  3953. microcontrollers to compete about six months ago, but I don't have their
  3954. literature to compare architectures.
  3955.  
  3956. Why am I posting straight to comp.compilers?
  3957.  
  3958. I have been playing with my own version of the assembler, as Microchip
  3959. charge for their development tools.  I have added features found in other
  3960. assemblers, such as include files, linking of intermediate object modules,
  3961. ... but this is still somewhat short of my ideal.
  3962.  
  3963. Having seen the other C compilers' efforts I would like to write my own,
  3964. but the very restricted architecture looks like making efficient
  3965. optimisation difficult.  So my first question, is there any literature on
  3966. optimising for strange architectures, (PICs have one register used for all
  3967. data transfers, several -bytes- of RAM, no stack space for data) ?
  3968.  
  3969. My second is related, what is a reasonable subset of C to support for such
  3970. a small processor?
  3971.  
  3972.  
  3973. I have also found that most people wanting to use PICs are electronics
  3974. engineers or hobbyists with little or no programming experience.  So they
  3975. would like a simple language that is easy to learn (an hour or two for
  3976. basic use, :-), clear to read, with support for both tight and loose
  3977. coupling to the hardware features.  Before I write a compiler for my own
  3978. language, I thought I should ask here for suggestions!
  3979.  
  3980. (As a guide: lack of a hardware stack rules out Forth and other threaded
  3981. languages, C & Pascal have too much syntax to learn).
  3982.  
  3983. Tempting fate, I anticipate that I would like to partition programs so
  3984. that they are spread between co-operating PIC processors.  So a 'small'
  3985. OCCAM might be a good base, allowing simple addition of the parallel
  3986. processing syntax at a later date.  Anybody have useful experience in
  3987. porting OCCAM?
  3988.  
  3989. As usual, if you email suggestions to me I'll summarise in a week or two.
  3990. Or you can just write and chat about PIC processors!
  3991.  
  3992. Hope this is of interest,
  3993. Anthony Naggs
  3994. Software/Electronics Engineer                   P O Box 1080, Peacehaven
  3995.                                                 East Sussex  BN10 8PZ
  3996. Phone: +44 273 589701                           Great Britain
  3997. Email: (c/o Univ of Brighton) amn@vms.brighton.ac.uk  or  xa329@city.ac.uk
  3998. -- 
  3999. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4000. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4001.  
  4002.  
  4003. From compilers Sat Feb  6 17:08:04 EST 1993
  4004. Newsgroups: comp.compilers
  4005. Path: iecc!compilers-sender
  4006. From: moss@cs.cmu.edu (Eliot Moss)
  4007. Subject: Re: Adding other languages to GCC (was, using GCC for back-end)
  4008. Message-ID: <93-02-052@comp.compilers>
  4009. Keywords: modula, GCC
  4010. Sender: compilers-sender@iecc.cambridge.ma.us
  4011. Reply-To: moss@cs.cmu.edu
  4012. Organization: Dept of Comp and Info Sci, Univ of Mass (Amherst)
  4013. References: <93-02-011@comp.compilers> <93-02-050@comp.compilers>
  4014. Date: Fri, 5 Feb 1993 16:38:53 GMT
  4015. Approved: compilers@iecc.cambridge.ma.us
  4016.  
  4017. The Modula-3 front end also generates trees. Because M3 allows arbitrary
  4018. use before definition, the front end is actually two pass, to resolve
  4019. identifier bindings properly. If other languages would benefit from such
  4020. two pass processing in the front end, they can use our code as a model
  4021. (once we release it :-) ....                Eliot
  4022. --
  4023. J. Eliot B. Moss, Associate Professor    Visiting Associate Professor
  4024. Department of Computer Science        School of Computer Science
  4025. Lederle Graduate Research Center    Carnegie Mellon University
  4026. University of Massachusetts        5000 Forbes Avenue
  4027. Amherst, MA  01003            Pittsburgh, PA  15213-3891
  4028. (413) 545-4206, 545-1249 (fax)        (412) 268-6767, 681-5739 (fax)
  4029. Moss@cs.umass.edu            Moss@cs.cmu.edu
  4030. -- 
  4031. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4032. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4033.  
  4034.  
  4035. From compilers Sat Feb  6 17:10:25 EST 1993
  4036. Newsgroups: comp.compilers
  4037. Path: iecc!compilers-sender
  4038. From: pbh@athena.mit.edu (Paul B Hill)
  4039. Subject: Looking for ASN.1 compiler for MSDOS / MS Windows
  4040. Message-ID: <93-02-053@comp.compilers>
  4041. Keywords: question
  4042. Sender: compilers-sender@iecc.cambridge.ma.us
  4043. Organization: Massachusetts Institute of Technology
  4044. Date: Fri, 5 Feb 1993 17:03:54 GMT
  4045. Approved: compilers@iecc.cambridge.ma.us
  4046.  
  4047. What products, (commercial, shareware. pd), are available to compile ASN.1
  4048. code for the PC environment?
  4049.  
  4050. A Novell marketing type told me that they were using an ASN compiler from
  4051. Watcom.  Watcom claims never to heard of the product. If you will mail me
  4052. a reply I will post a summary. If you know of a more appropriate place to
  4053. ask this question please advise me.
  4054.  
  4055. pbh@mit.edu
  4056. -- 
  4057. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4058. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4059.  
  4060.  
  4061. From compilers Sat Feb  6 17:12:09 EST 1993
  4062. Newsgroups: comp.compilers
  4063. Path: iecc!compilers-sender
  4064. From: David.Chase@Eng.Sun.COM (David Chase)
  4065. Subject: re: Adding other languages to GCC
  4066. Message-ID: <93-02-054@comp.compilers>
  4067. Keywords: GCC
  4068. Sender: compilers-sender@iecc.cambridge.ma.us
  4069. Organization: Compilers Central
  4070. References: <93-02-011@comp.compilers> <93-02-050@comp.compilers>
  4071. Date: Fri, 5 Feb 1993 19:17:43 GMT
  4072. Approved: compilers@iecc.cambridge.ma.us
  4073.  
  4074. I studied this once, around about gcc 1.2x.  One caveat that RMS did not
  4075. provide is that if your language has substantially different features from
  4076. C -- for instance, nested functions, or garbage collection, or closures,
  4077. or continuations -- then the rest of the back-end may not "correctly"
  4078. generate the code that you want.  That is, it was designed (and so far,
  4079. tested) for languages like C.  Fortran shouldn't be hard to compile (once
  4080. you parse it, and never mind the IO libraries), and with a little hackery
  4081. Pascal and Modula-2 should also fall out.  However, using GCC as a backend
  4082. for Scheme might be a tall order, and it is my understanding that it has
  4083. taken a lot of work to make the optimizer in GCC GC-aware for Modula-3.
  4084.  
  4085. I once tried to write some documentation for the tree data structures.  It
  4086. is almost certainly obsolete now.  The trees were pretty easy to figure
  4087. out, but (another warning) watch out for those places where trees are NOT
  4088. used as the intermediate data structure (I recall that 1.x would generate
  4089. the function prologue and epilogue more or less directly without going
  4090. through the trees).  Perhaps this has been cleaned up in 2.x.
  4091.  
  4092. David
  4093. -- 
  4094. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4095. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4096.  
  4097.  
  4098. From compilers Sat Feb  6 17:13:02 EST 1993
  4099. Newsgroups: comp.compilers
  4100. Path: iecc!compilers-sender
  4101. From: kalsow@src.dec.com (Bill Kalsow)
  4102. Subject: Re: Compiler construction in ... and OOD
  4103. Message-ID: <93-02-055@comp.compilers>
  4104. Keywords: OOP, modula
  4105. Sender: compilers-sender@iecc.cambridge.ma.us
  4106. Organization: DEC Systems Research Center
  4107. References:  <93-02-032@comp.compilers>
  4108. Date: Thu, 4 Feb 1993 16:46:46 GMT
  4109. Approved: compilers@iecc.cambridge.ma.us
  4110.  
  4111. vivek@sequent.com (Vivek Buzruk) writes:
  4112. > But the same article gave me some thoughts about considering object
  4113. > oriented design of a compiler.  Does anyone know about research done on
  4114. > this topic?  OR any practical compilers using this methodology, and how
  4115. > they do it?
  4116.  
  4117. The SRC Modula-3 compiler uses objects throughout the front-end.  Several
  4118. years ago I observed that the internals of most compilers are a mess and
  4119. wondered why.  My conjecture is that two factors contribute:
  4120.  
  4121.   1) Serious compilers have a long life-time.  Several programmers
  4122.      hack on the source.  The original authors are gone and their
  4123.      inspirations get muddled over time.  Of course, any long-lived
  4124.      program will suffer these problems -- not just compilers.
  4125.  
  4126.   2) Most compilers expose a large complicated data structure, usually a
  4127.      decorated syntax tree, with little or no access control or abstraction
  4128.      (e.g. GCC's tree.{def,h,c}).
  4129.  
  4130. I decided to attack the second problem.  I started building a compiler
  4131. where the front-end data structures were hidden whenever possible.  The
  4132. scanner is a single hand written module.  The parser is a simple recursive
  4133. descent parser that's distributed across many modules.  There's a separate
  4134. module for each language construct: ARRAY type, FOR statement, +
  4135. expression, ...  Each module is responsible for parsing, type checking,
  4136. answering queries, and emitting code for its construct.  Of course, the
  4137. glue that makes it possible is that each parser yields a tree node that's
  4138. a subtype of one of the four general classes: Stmt, Type, Expr, Value.
  4139. Every statement has a "type-check" and a "compile" method, but only
  4140. ForStmt knows that its node has "index-var", "from", "to", "step" and
  4141. "body" components.
  4142.  
  4143. I would say the results are mixed.  Instead of a few large modules, there
  4144. are about a hundred little ones.  What might be implemented as a CASE
  4145. statement with several labels sharing code turns into a method call with
  4146. less shared code.  On the plus side, clients almost always report bugs in
  4147. terms of a language construct (e.g "this IF statement doesn't work") not
  4148. in terms of a traditional compiler organization (e.g. "I think the type
  4149. checker is broken").  The most telling advantage remains to be seen.  How
  4150. well will the compiler survive its hackers over time?
  4151.  
  4152. If you're interested, the SRC Modula-3 compiler and its sources are
  4153. available for public FTP in /pub/DEC/Modula-3/release/* on
  4154. gatekeeper.dec.com.
  4155.  
  4156.   - Bill Kalsow
  4157. -- 
  4158. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4159. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4160.  
  4161.  
  4162. From compilers Sat Feb  6 17:20:40 EST 1993
  4163. Newsgroups: comp.compilers
  4164. Path: iecc!compilers-sender
  4165. From: Todd Jonker <tj00+@andrew.cmu.edu>
  4166. Subject: Re: Compiler construction...
  4167. Message-ID: <93-02-056@comp.compilers>
  4168. Keywords: C++, OOP
  4169. Sender: compilers-sender@iecc.cambridge.ma.us
  4170. Organization: Compilers Central
  4171. References: <93-02-032@comp.compilers> <93-02-048@comp.compilers>
  4172. Date: Fri, 5 Feb 1993 20:27:46 GMT
  4173. Approved: compilers@iecc.cambridge.ma.us
  4174.  
  4175. vivek@sequent.com (Vivek Buzruk) writes:
  4176. > [Is a] compiler..  a good application for O-O design?
  4177.  
  4178. Cliff Click writes:
  4179. > My research compiler is written entirely in C++ (except for the front-end
  4180. > parsing stuff).  I find the O-O issues immensely helpful.  I have class
  4181. > definitions for all the interesting internal data structures: hash tables,
  4182. > symbol tables, instructions, etc.  The complexity control C++ gives me is
  4183. > a BIG win.
  4184.  
  4185. I too am writing a compiler in C++, including the frontend.  Each AST node
  4186. is a class, with two main methods: Analyze and Emit.  These correspond to
  4187. two `passes' of a traditional compiler architecture.  I am often amazed at
  4188. how easily I can incrementally extend the language with new
  4189. syntax/semantics.  Just define a new class and write a couple routines.
  4190. Once the framework is in place, adding constructs is a piece of cake.
  4191.  
  4192. I am using my own parser-generator which constructs an AST node when a
  4193. production is matched.  Thus, the C-code that usually sits in the YACC
  4194. file is instead part of the class constructor methods.  This in turn keeps
  4195. my grammar description code very clean, and MUCH easier to create and
  4196. maintain that LEX/YACC.  Another big win.
  4197.  
  4198. [vivek:]
  4199. > Obviously one can not go away from traditional phase structured design
  4200. > to define the functionality of a compiler.
  4201.  
  4202. As I indicated above, in my design the various phases are replaced with
  4203. tree-walks performed via virtual function calls.
  4204.  
  4205. . . . Todd V. Jonker . . . . . Carnegie Mellon University . . .
  4206. . . . tjonker@cs.cmu.edu . . . Information Technology Center . . .
  4207. -- 
  4208. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4209. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4210.  
  4211.  
  4212. From compilers Sat Feb  6 17:44:11 EST 1993
  4213. Newsgroups: comp.compilers
  4214. Path: iecc!compilers-sender
  4215. From: pardo@cs.washington.edu (David Keppel)
  4216. Subject: Re: Thompson's 2c vs. gcc
  4217. Message-ID: <93-02-057@comp.compilers>
  4218. Keywords: architecture, GCC
  4219. Sender: compilers-sender@iecc.cambridge.ma.us
  4220. Organization: Computer Science & Engineering, U. of Washington, Seattle
  4221. References: <93-01-205@comp.compilers> <93-02-049@comp.compilers>
  4222. Date: Fri, 5 Feb 1993 20:53:40 GMT
  4223. Approved: compilers@iecc.cambridge.ma.us
  4224.  
  4225. >>>[Comparison of output code from GCC, lcc, and Plan 9 C compilers.]
  4226.  
  4227. Preston Briggs writes:
  4228. >>[GCC 1.35 didn't generate very good MIPS code.  It's better now.]
  4229.  
  4230. jbuck@forney.berkeley.edu (Joe Buck):
  4231. >[Gcc did not have an instruction scheduler and did not fill delayed
  4232. > branch slots.  Adding them makes about a 30% difference on SPARCs.]
  4233.  
  4234. I believe that GCC ports rely on the MIPS assembler.  The MIPS assembler
  4235. by default provides a virtual machine without delay slots then rearranges
  4236. instructions to fill the real delay slots.  The assembler can be told to
  4237. reveal the underlying machine to allow explicit delay slot filling.
  4238.  
  4239. The current GCC produces code both ways.  It is thus better able to take
  4240. advantage of delay slot filling.  But even the older ports did some just
  4241. by virtue of the assembler.
  4242.  
  4243. I do agree that GCC produces better quality MIPS code than it did a few
  4244. years ago.
  4245.  
  4246.     ;-D on  ( Quality time with your compiler )  Pardo
  4247. -- 
  4248. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4249. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4250.  
  4251.  
  4252. From compilers Sat Feb  6 17:45:09 EST 1993
  4253. Newsgroups: comp.compilers
  4254. Path: iecc!compilers-sender
  4255. From: vern@daffy.ee.lbl.gov (Vern Paxson)
  4256. Subject: Re: yytext in POSIX lex
  4257. Message-ID: <93-02-058@comp.compilers>
  4258. Keywords: lex, design
  4259. Sender: compilers-sender@iecc.cambridge.ma.us
  4260. Organization: Lawrence Berkeley Laboratory, Berkeley CA
  4261. References: <93-02-035@comp.compilers>
  4262. Date: Fri, 5 Feb 1993 21:26:32 GMT
  4263. Approved: compilers@iecc.cambridge.ma.us
  4264.  
  4265. > [Of the two major implementations of lex, AT&T lex makes yytext an array
  4266. > and flex makes it a pointer ....  You have to try fairly hard to tell
  4267. > the difference, e.g. use sizeof(yytext). -John]
  4268.  
  4269. One major problem is that if another source file declares yytext as
  4270.  
  4271.     extern char yytext[];
  4272.  
  4273. and the lex-generated code declares it as
  4274.  
  4275.     extern char *yytext;
  4276.  
  4277. (or vice versa), then on systems without type-safe linkage the program may
  4278. link without any warning or error, but crash at run-time when yytext is
  4279. accessed.  It was this argument that led to the (crufty) adoption of
  4280. %pointer and %array.
  4281.  
  4282.         Vern
  4283.  
  4284.     Vern Paxson                vern@ee.lbl.gov
  4285.     Systems Engineering                ucbvax!ee.lbl.gov!vern
  4286.     Lawrence Berkeley Laboratory        (510) 486-7504
  4287. -- 
  4288. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4289. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4290.  
  4291.  
  4292. From compilers Sat Feb  6 17:47:49 EST 1993
  4293. Newsgroups: comp.compilers
  4294. Path: iecc!compilers-sender
  4295. From: meissner@osf.org
  4296. Subject: Re: Thompson's 2c vs. gcc
  4297. Message-ID: <93-02-059@comp.compilers>
  4298. Keywords: architecture, GCC
  4299. Sender: compilers-sender@iecc.cambridge.ma.us
  4300. Organization: Compilers Central
  4301. References: <93-01-205@comp.compilers> <93-02-057@comp.compilers>
  4302. Date: Fri, 5 Feb 1993 23:39:31 GMT
  4303. Approved: compilers@iecc.cambridge.ma.us
  4304.  
  4305.  
  4306. Joe Buck writes:
  4307. | It wasn't just that [MIPS gcc 1.x] was not well tuned.  It did not have an
  4308. | instruction scheduler and could not fill delayed branch slots.  gcc-2 does
  4309. | both.  I understand that this makes a difference of about 30% on the
  4310. | Sparc; the number is probably similar on the MIPS.  gcc-1 did a good job
  4311. | on the CISC architectures (Vax and 680x0) it was initially designed for.
  4312.  
  4313. Actually the number is not similar on the MIPS.  The reason is that the
  4314. MIPS assembler does low level instruction scheduling (though I don't
  4315. recall whether gcc 1.35 and such passed -O to the assembler, but I think
  4316. it did).  I did put in scheduling and branch delay slot filling support in
  4317. Gcc 2.x for the MIPS (because for the OSF/1 Pmax reference platform, we
  4318. used GAS as the assembler, and it doesn't do instruction scheduling).
  4319.  
  4320. One big win that Gcc 2.xx has (and later versions of gcc-osf-1.39 if you
  4321. used -O2) is that it uses a constant frame (providing you don't use
  4322. alloca), rather than continually pushing and popping items from the stack
  4323. pointer, and eliminating the frame pointer in most cases, freeing up
  4324. another saved register.  There were other places where it definately
  4325. needed a tuneup, and hopefully it is reasonably tuned now.
  4326. --
  4327. Michael Meissner    email: meissner@osf.org        phone: 617-621-8861
  4328. Open Software Foundation, 11 Cambridge Center, Cambridge, MA, 02142
  4329. -- 
  4330. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4331. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4332.  
  4333.  
  4334. From compilers Sat Feb  6 17:50:38 EST 1993
  4335. Newsgroups: comp.compilers
  4336. Path: iecc!compilers-sender
  4337. From: oz@ursa.sis.yorku.ca (Ozan Yigit)
  4338. Subject: fast compilers [Re: Thompson's 2c vs. gcc]
  4339. Message-ID: <93-02-060@comp.compilers>
  4340. Keywords: performance, comment
  4341. Sender: compilers-sender@iecc.cambridge.ma.us
  4342. Organization: York U. Student Information Systems Project
  4343. References: <93-01-205@comp.compilers> <93-02-042@comp.compilers>
  4344. Date: Sat, 6 Feb 1993 05:56:08 GMT
  4345. Approved: compilers@iecc.cambridge.ma.us
  4346.  
  4347.  
  4348. Michael John Haertel writes:
  4349.                 ...
  4350.    Thompson's claim that 2c typically compiles in 50% of the time gcc takes
  4351.    is probably an understatement, in fact.  2c is the most nearly I/O-bound
  4352.    compiler I've ever used.
  4353.  
  4354. I have not used 2c, but I have used Redelmeier's RCC, which is a very
  4355. fast non-optimizing ansi-c compiler. Last time I tested its speed, it
  4356. was able to compile [on a 68020 sun] gcc at around 30% of the time it
  4357. would take gcc to compile itself without -O.
  4358.  
  4359. Is there any interest in very fast compilers that sacrifice some code
  4360. compactness and speed [rcc-compiled gcc is ~30% slower than the usual
  4361. gcc compiled with gcc -O] for sheer compilation speed? Does the speed
  4362. of compilation have any impact on large-scale code development? [I do
  4363. think so, but I am biased. ;-)]
  4364.  
  4365. oz
  4366. [Microsoft makes a fair amount of money selling Quick C, which compiles a
  4367. lot faster than regular MS C and produces worse code.  Turbo C also leapt
  4368. into the market because it compiles so fast, using simple techniques like
  4369. buffering include files in RAM. -John]
  4370. -- 
  4371. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4372. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4373.  
  4374.  
  4375. From compilers Sun Feb  7 17:27:45 EST 1993
  4376. Xref: iecc comp.lang.lisp:6708 comp.lang.scheme:4952 comp.compilers:4231
  4377. Newsgroups: comp.lang.lisp,comp.lang.scheme,comp.compilers
  4378. Path: iecc!compilers-sender
  4379. From: tammet@cs.chalmers.se (Tanel Tammet)
  4380. Subject: A new Scheme->C compiler HOBBIT for SCM
  4381. Message-ID: <93-02-061@comp.compilers>
  4382. Keywords: Scheme, FTP
  4383. Sender: compilers-sender@iecc.cambridge.ma.us
  4384. Organization: Dept. of CS, Chalmers, Sweden
  4385. Date: Sun, 7 Feb 1993 10:43:19 GMT
  4386. Approved: compilers@iecc.cambridge.ma.us
  4387.  
  4388.  
  4389. This message announces the availability of a new Scheme->C compiler hobbit
  4390. release 1.
  4391.  
  4392. Hobbit works together with the Scheme interpreter scm developed by
  4393. A.Jaffer, treating scm as a C library and providing integration of
  4394. compiled functions into scm as new primitives. Hobbit release 1 works
  4395. together with the scm release scm4b3. Future releases of scm and hobbit
  4396. will be coordinated. A. Jaffer has helped with suggestions for better
  4397. integration of hobbit-compiled functions into scm and coordinating scm and
  4398. hobbit releases.
  4399.  
  4400. Hobbit release 1 imposes strong restrictions on the higher-order features
  4401. of Scheme. For example, it does not support continuations.
  4402.  
  4403. The main aim of hobbit is to produce maximally fast C programs which would
  4404. retain most of the original Scheme program structure, making the output C
  4405. program readable and modifiable. Hobbit is written in Scheme and is able
  4406. to self-compile.
  4407.  
  4408. Hobbit release 1 consists of three files, approximately 160K altogether:
  4409.  
  4410. hobbit.scm   -  the compiler
  4411. hobbit.doc   -  documentation
  4412. hobbit.tms   -  terms of usage, copying, redistribution
  4413.  
  4414. Hobbit can be obtained via FTP from the following servers:
  4415.  
  4416. altdorf.ai.mit.edu:archive/scm/hobbit1.tar.Z
  4417. prep.ai.mit.edu:pub/gnu/jacal/hobbit1.tar.Z
  4418. nexus.yorku.ca:pub/scheme/new/hobbit1.tar.Z
  4419.  
  4420. Remember to use binary mode when transferring the files.  A sample ftp
  4421. session:
  4422.  
  4423.   ftp altdorf.ai.mit.edu [18.43.0.246] (anonymous)
  4424.   bin
  4425.   cd archive/scm
  4426.   get hobbit1.tar.Z
  4427.  
  4428. The author can be reached by email as tammet@cs.chalmers.se and by
  4429. snail-mail as
  4430.  
  4431. Tanel Tammet, Department of Computer Sciences,
  4432. Chalmers University of Technology, S-41296 Go"teborg, Sweden.
  4433. -- 
  4434. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4435. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4436.  
  4437.  
  4438. From compilers Sun Feb  7 17:29:09 EST 1993
  4439. Xref: iecc comp.compilers:4232 misc.jobs.offered:23470
  4440. Newsgroups: comp.compilers,misc.jobs.offered
  4441. Path: iecc!compilers-sender
  4442. From: compilers-jobs@iecc.cambridge.ma.us
  4443. Subject: Compiler positions available for week ending February 7
  4444. Message-ID: <93-02-062@comp.compilers>
  4445. Keywords: jobs
  4446. Sender: compilers-sender@iecc.cambridge.ma.us
  4447. Organization: Compilers Central
  4448. Date: Sun, 7 Feb 1993 13:00:03 GMT
  4449. Approved: compilers@iecc.cambridge.ma.us
  4450.  
  4451. This is a digest of ``help wanted'' and ``position available'' messages
  4452. received at comp.compilers during the preceding week.  Messages must
  4453. advertise a position having something to do with compilers and must also
  4454. conform to the guidelines periodically posted in misc.jobs.offered.  To
  4455. respond to a job offer, send mail to the author of the message.  To submit
  4456. a message, mail it to compilers@iecc.cambridge.ma.us.
  4457.  
  4458.  
  4459. -------------------------------
  4460.  
  4461. From: miker@metaware.com (Mike Ross)
  4462. Subject: Compiler Developer Opening
  4463. Organization: Metaware Incorporated, Santa Cruz, CA
  4464. Date: Tue, 2 Feb 93 18:00:03 GMT
  4465.  
  4466. Software Engineers
  4467. To build compilers, libraries, linkers, debuggers, programming
  4468. environments, and other development tools.  Requires C/C++, DOS, and UNIX
  4469. background. MS/Windows experience preferred. Strong programming skills,
  4470. knowledge of RISC and CISC architectures required. Prefer some experience
  4471. with Intel i860 code generator. Must be able to work on compiler
  4472. front-ends, optimizer, or code generators.  This is not an entry level
  4473. position. MS Computer Science or equivalent experience required.
  4474.  
  4475. Reply by e-mail to joan-e@metaware.com, or
  4476. fax to (408) 429-9273, Attn Personnel
  4477.  
  4478. -------------------------------
  4479.  
  4480. Organization: Scientific Placement, Inc.
  4481. From: BGE@spi.com (BGE)
  4482. Date: Wed, 3 Feb 1993 16:13:59 CST
  4483. Subject: CA-Compiler Engrs
  4484.  
  4485. Job Title & Location
  4486.  
  4487. CA-Compiler Engrs
  4488. Software engineers needed by Northern California in the compiler and
  4489. tools/libraries area. Skills desired include:
  4490. * Experience with compilers, including front ends, optimizers and code
  4491. generators
  4492. * Strong programming skills and knowledge of RISC and CISC architecture
  4493. * C, C++, DOS Unix and Windows
  4494. * Experience building development tools.
  4495.  
  4496. A similar position is also open in Texas.
  4497.  
  4498. Please send resume with salary info to:
  4499.  
  4500. Beth Evancheck
  4501. Scientific Placement, Inc., Box 71, San Ramon, CA 94583
  4502. 510-733-6168  Fax: 713-496-6802
  4503. Internet: bge@scientific.com; Compuserve: 71250,3001; AppleLink: Scientific;
  4504. Genie: D.SMALL6; AOL: DaveSmall; BIX: Scientific
  4505.  
  4506. Formats: Ascii text via Email preferred. Macintosh or PC Word processor
  4507. formats are OK via Email (binhex). Please do not send LaTex or Postscript.
  4508. Fax is discouraged unless Fine Setting on your fax machine is used (to
  4509. enable OCR scanning). US Mail on 3.5 inch diskette is OK too.
  4510.  
  4511. Immigration status: You must be a U.S. or Canadian Citizen or have a
  4512. Permanent Residence Visa.
  4513.  
  4514. New graduates: Employers utilize the college placement offices to hire new
  4515. graduates. They do not employ recruiting firms for this purpose. We are
  4516. unable to assist recent graduates.
  4517.  
  4518.  
  4519. Beth Evancheck
  4520. Scientific Placement, Inc., P.O. Box 71, San Ramon, CA 94583
  4521. 510-733-6168
  4522. BGE@Scientific.com -or- SCIENTIFIC@APPLELINK.APPLE.COM
  4523. -- 
  4524. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4525. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4526.  
  4527.  
  4528. From compilers Sun Feb  7 17:37:21 EST 1993
  4529. Newsgroups: comp.compilers
  4530. Path: iecc!compilers-sender
  4531. From: psu@cs.duke.edu (Peter Su)
  4532. Subject: Re: fast compilers [Re: Thompson's 2c vs. gcc]
  4533. Message-ID: <93-02-063@comp.compilers>
  4534. Keywords: performance
  4535. Sender: compilers-sender@iecc.cambridge.ma.us
  4536. Organization: Duke University CS Dept., Durham, NC
  4537. References: <93-01-205@comp.compilers> <93-02-060@comp.compilers>
  4538. Date: Sun, 7 Feb 1993 17:16:31 GMT
  4539. Approved: compilers@iecc.cambridge.ma.us
  4540.  
  4541. oz@ursa.sis.yorku.ca (Ozan Yigit) writes:
  4542.  
  4543.    Is there any interest in very fast compilers that sacrifice some code
  4544.    compactness and speed ... for sheer compilation speed?
  4545.    [Microsoft makes a fair amount of money selling Quick C, which compiles a
  4546.    lot faster than regular MS C and produces worse code. ... . -John]
  4547.  
  4548. These systems, and others like Think C on the Mac also depend on a very
  4549. fast link phase for their quick turnaround. I think they link mostly in
  4550. memory and with indirect jump tables and whatnot.
  4551.  
  4552. There was an SP&E paper on an incremental linker a while back that said it
  4553. increased UNIX compile cycles by huge factors.
  4554.  
  4555. Pete
  4556. --
  4557. Department of Computer Science, Duke University, Durham, NC 27706
  4558. Internet:    psu@cs.duke.edu
  4559. UUCP:        mcnc!duke!psu
  4560. -- 
  4561. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4562. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4563.  
  4564.  
  4565. From compilers Sun Feb  7 17:38:35 EST 1993
  4566. Newsgroups: comp.compilers
  4567. Path: iecc!compilers-sender
  4568. From: moss@cs.cmu.edu (Eliot Moss)
  4569. Subject: Re: Adding other languages to GCC
  4570. Message-ID: <93-02-064@comp.compilers>
  4571. Keywords: GCC, design
  4572. Sender: compilers-sender@iecc.cambridge.ma.us
  4573. Reply-To: moss@cs.cmu.edu
  4574. Organization: Dept of Comp and Info Sci, Univ of Mass (Amherst)
  4575. References: <93-02-011@comp.compilers> <93-02-054@comp.compilers>
  4576. Date: Sun, 7 Feb 1993 17:55:38 GMT
  4577. Approved: compilers@iecc.cambridge.ma.us
  4578.  
  4579. David.Chase@Eng.Sun.COM (David Chase) said:
  4580. > I studied this once, around about gcc 1.2x.  One caveat that RMS did
  4581. > not provide is that if your language has substantially different
  4582. > features from C -- for instance, nested functions, or garbage
  4583. > collection, or closures, or continuations -- then the rest of the
  4584. > back-end may not "correctly" generate the code that you want.  That is,
  4585. > it was designed (and so far, tested) for languages like C.
  4586.  
  4587. [ etc. ]
  4588.  
  4589. While David is basically right, nested function support (static chains)
  4590. came with gcc 2.0 and higher (it's in gcc's extensions to C). Also, our
  4591. Modula-3 work addresses the issue of garbage collection. Full closures and
  4592. continuations would still be a problem, and the orientation is towards
  4593. static typing rather than dynamic/tagged languages such as LISP, Scheme,
  4594. ML, etc.
  4595.  
  4596. Adding support for exception handling and gc did involve some subtleties,
  4597. but my take on it is that the coding was not that hard. What was hard was
  4598. coming to the proper understand of what needed to be done. The incremental
  4599. change to the back end is not all that large. Amer Diwan, who did the
  4600. work, can expand on this point I'm sure. There is a group of us trying to
  4601. work out language independent expcetion handling support from the tree
  4602. stage on, and the main challenges are doing it across language,
  4603. architectures, and operating systems, but I think we've basically got it
  4604. in hand.
  4605. --
  4606. J. Eliot B. Moss, Associate Professor    Visiting Associate Professor
  4607. Department of Computer Science        School of Computer Science
  4608. Lederle Graduate Research Center    Carnegie Mellon University
  4609. University of Massachusetts        5000 Forbes Avenue
  4610. Amherst, MA  01003            Pittsburgh, PA  15213-3891
  4611. (413) 545-4206, 545-1249 (fax)        (412) 268-6767, 681-5739 (fax)
  4612. Moss@cs.umass.edu            Moss@cs.cmu.edu
  4613. -- 
  4614. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4615. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4616.  
  4617.  
  4618. From compilers Mon Feb  8 14:05:29 EST 1993
  4619. Newsgroups: comp.compilers
  4620. Path: iecc!compilers-sender
  4621. From: josef <mollers.pad@sni.de>
  4622. Subject: lcc backend
  4623. Message-ID: <93-02-065@comp.compilers>
  4624. Keywords: tools, question, C
  4625. Sender: compilers-sender@iecc.cambridge.ma.us
  4626. Organization: Compilers Central
  4627. Date: Mon, 8 Feb 1993 09:18:32 GMT
  4628. Approved: compilers@iecc.cambridge.ma.us
  4629.  
  4630. Hi,
  4631.  
  4632. I just fetched lcc from princeton. I'd like to use it to generate code for
  4633. a 68010 and was wondering if anyone has a backend to do so.  Altough I'm
  4634. only a private user (I have a Torch XXX with a 68010 and 1MB at home), I
  4635. don't think I'd qualify for a free backend B-{(
  4636.  
  4637. Gcc probably won't run on my system (UNIX only leaves some 600K for user
  4638. programs).
  4639.  
  4640. Josef
  4641. ---
  4642. Josef Moellers        | c/o Siemens Nixdorf Informationssysteme AG
  4643. USA: mollers.pad@sni-usa.com    | Abt. STO-XS 113       | Riemekestrasse
  4644. !USA: mollers.pad@sni.de    | Phone: (+49) 5251 835124 | D-4790 Paderborn
  4645. -- 
  4646. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4647. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4648.  
  4649.  
  4650. From compilers Mon Feb  8 14:07:42 EST 1993
  4651. Newsgroups: comp.compilers
  4652. Path: iecc!compilers-sender
  4653. From: clyde@hitech.com.au (Clyde Smith-Stubbs)
  4654. Subject: Re: PIC 16Cxx Compilers
  4655. Message-ID: <93-02-066@comp.compilers>
  4656. Keywords: tools
  4657. Sender: compilers-sender@iecc.cambridge.ma.us
  4658. Organization: HI-TECH Software, Brisbane, QLD, Australia.
  4659. References: <93-02-015@comp.compilers> <93-02-043@comp.compilers>
  4660. Date: Mon, 8 Feb 1993 00:50:05 GMT
  4661. Approved: compilers@iecc.cambridge.ma.us
  4662.  
  4663. manningc@procor.dialogic.com (Charles Manning) writes:
  4664.  
  4665. >I've had a bit of experience with PICs and HLL's on other
  4666. >microcontrollers.  Sorry, but I don't think HLL's are feasible for PIC
  4667. >16Cxx family.
  4668.  
  4669. I don't agree - I have looked briefly at the PIC and believe that it is
  4670. just as suitable as the 6805 as the target of a C compiler.  We recently
  4671. completed a C compiler for the 6805 that implements full ISO Standard C,
  4672. with the only restrictions being on recursion and re-entrancy, forced by
  4673. the non-addressability and small size of the stack.
  4674.  
  4675. This limitation is not important for embedded applications, and in all
  4676. other respects the compiler implements Standard C (non-hosted), including
  4677. longs, floats and printf. Code quality (== density) is quite close to hand
  4678. written assembler, with the advantage that on the odd occasion that
  4679. something like floating point is needed, it is available in the library.
  4680.  
  4681. At the present time I don't believe a compiler for the PIC chips exists,
  4682. but we are considering doing one. There is an astonishly high level of
  4683. demand for the 6805 compiler, but I am not sure how widely the PIC chips
  4684. are used.
  4685.  
  4686. >Even shoehorning C into a 8051 has taken the industry quite a while to get
  4687. >anywhere near to useful.
  4688.  
  4689. Yes, it took a while, but current 8051 compilers are very useful. The 8051
  4690. is complicated by having no less than seven (7!) distinct address spaces.
  4691.  
  4692. By way of example of the practicality of C on an 8051, one of our
  4693. customers recently completed a GPS receiver using an 8051, with 99% of the
  4694. code written in C. It uses trig functions intensively, and is claimed to
  4695. outperform a competitive GPS receiver using an 8086 processor.
  4696.  
  4697. Using a high level language on a low-level embedded processor makes a lot
  4698. of sense, especially when the code will need to be modified later, or the
  4699. number of units to be produced is small. There also seems to be a tendency
  4700. for engineers to want to use C because they know it, and don't want or
  4701. can't afford the time to learn to program a new chip at assembler level.
  4702.  
  4703. Given the quality of compilers now available for these chips, this is a
  4704. very realistic approach.
  4705. --
  4706.  Clyde Smith-Stubbs       | HI-TECH Software,       | Voice: +61 7 300 5011
  4707.  clyde@hitech.com.au      | P.O. Box 103, Alderley, | Fax:   +61 7 300 5246
  4708.  ...!nwnexus!hitech!clyde | QLD, 4051, AUSTRALIA.   | BBS:   +61 7 300 5235
  4709. -- 
  4710. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4711. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4712.  
  4713.  
  4714. From compilers Mon Feb  8 14:08:37 EST 1993
  4715. Newsgroups: comp.compilers
  4716. Path: iecc!compilers-sender
  4717. From: Mirek Benes <benes@dcse.fee.vutbr.cs>
  4718. Subject: P-code
  4719. Message-ID: <93-02-067@comp.compilers>
  4720. Keywords: question, Pascal
  4721. Sender: compilers-sender@iecc.cambridge.ma.us
  4722. Organization: Compilers Central
  4723. Date: Mon, 8 Feb 1993 14:49:39 GMT
  4724. Approved: compilers@iecc.cambridge.ma.us
  4725.  
  4726. Is there any ftp-accessible site with the P-code description?
  4727.  
  4728.       Mirek Benes
  4729. --
  4730. Technical University of Brno           E-mail: benes@dcse.fee.vutbr.cs
  4731. Faculty of Electrical Engineering      Phone: +42-5-746111 / 238
  4732. Department of Computer Science & Engineering
  4733. Bozetechova 2, 612 66 Brno, Czech rep. FAX:   +42-5-750252
  4734. -- 
  4735. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4736. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4737.  
  4738.  
  4739. From compilers Mon Feb  8 15:55:25 EST 1993
  4740. Newsgroups: comp.compilers
  4741. Path: iecc!compilers-sender
  4742. From: burley@apple-gunkies.gnu.ai.mit.edu (Craig Burley)
  4743. Subject: Re: Adding other languages to GCC (was, using GCC for back-end)
  4744. Message-ID: <93-02-068@comp.compilers>
  4745. Keywords: GCC, Fortran
  4746. Sender: compilers-sender@iecc.cambridge.ma.us
  4747. Organization: Free Software Foundation 545 Tech Square Cambridge, MA 02139
  4748. References: <93-02-011@comp.compilers> <93-02-052@comp.compilers>
  4749. Date: Mon, 8 Feb 1993 18:44:31 GMT
  4750. Approved: compilers@iecc.cambridge.ma.us
  4751.  
  4752. moss@cs.cmu.edu (Eliot Moss) writes:
  4753.  
  4754.    The Modula-3 front end also generates trees. Because M3 allows arbitrary
  4755.    use before definition, the front end is actually two pass, to resolve
  4756.    identifier bindings properly. If other languages would benefit from such
  4757.    two pass processing in the front end, they can use our code as a model
  4758.    (once we release it :-) ....                Eliot
  4759.  
  4760. The GNU Fortran (g77) front end isn't really designed as a two-pass front
  4761. end, because a model whereby compilation of FORTRAN 77 to assembler code
  4762. is possible in one pass is easy to design.
  4763.  
  4764. However, enter the gcc back end and the procedure calling interface, and
  4765. it made sense to add what amounts to a second pass to the g77 front end to
  4766. reduce the amount of redevelopment needed in the back end, so I did this.
  4767.  
  4768. What now happens is that while g77 is recognizing statements and building
  4769. its own internal trees describing the expressions in the statements,
  4770. instead of directly calling on the back end to emit the statements, it
  4771. saves the statements until it reaches the end of the program unit.  At
  4772. that point, the end-transition action happens, which makes the "final
  4773. decisions" about what all the symbols actually are, and _then_ the list of
  4774. saved statements (and info on all the symbols) is revisited to call the
  4775. back end.  In other words, the back end is unaware that anything is going
  4776. on until after the front end sees the END statement.  This isn't ideal or
  4777. even strictly necessary, especially given that the back end currently
  4778. saves up all the RTL anyway, but it sure made it easier to get g77 up and
  4779. running without my needing to become an expert on the back end.
  4780.  
  4781. Before the change to two passes, made partway through the process of
  4782. integrating the front end with the back end (85% of the front end having
  4783. been coded by the time integration started, don't ask why :-), I'd already
  4784. written some code to revise the RTL in cases like this:
  4785.  
  4786.     ASSIGN 10 TO I
  4787.     ...
  4788. 10    FORMAT(...)
  4789.  
  4790. Most ASSIGN statements refer to labels for executable statements, but they
  4791. may refer to FORMAT statements instead, and it's the label definition that
  4792. chooses.  The implementation at the assembler level can be made
  4793. independent of the label type, but with layers of back end code (where
  4794. info on whether a reference is to a procedure label or a variable is kept)
  4795. on top of the conceptual assembler level, g77 had to make a choice.  When
  4796. g77 saw the ASSIGN statement above, it assumed that label 10 was
  4797. executable (as far as back-end stuff goes) and acted accordingly.  Then,
  4798. when it saw the FORMAT, g77 had special code to revisit the RTL, search
  4799. for references to the label, and change them so they'd work for a FORMAT
  4800. label.  (Needless to say, it annoyed me that front-end code had to muck
  4801. with the RTL, so I was happy to delete this code when changing g77 to call
  4802. on the back end only after a complete pass over the source program unit.)
  4803.  
  4804. If you're curious about what made 2-pass a necessity, here's a
  4805. straightforward example.  g77 is designed (for now, anyway) to make object
  4806. files compatible with f2c+gcc.  The procedure calling interface defined by
  4807. f2c passes CHARACTER variables by appending pass-by-value lengths to the
  4808. list of arguments for each CHARACTER variable in the calling sequence.
  4809.  
  4810. For example, given
  4811.  
  4812.     CHARACTER A*5, B*10, C*15
  4813.     INTEGER I(10)
  4814.     CALL FOO (A, I, B, C)
  4815.  
  4816. FOO is called like this (in C):
  4817.  
  4818.     FOO (&A, &I, &B, &C, 5, 10, 15);
  4819.  
  4820. That is, the lengths for A, B, and C are passed to FOO.  Now, let's look
  4821. at the first several lines of a sample subroutine:
  4822.  
  4823.     SUBROUTINE BAR (A, I, B, C)
  4824.     CHARACTE A*(*), B*10, C*(*)
  4825.     INTEGER I(10)
  4826. C
  4827.     I(1) = 5
  4828.  
  4829. At this point, if g77 was 1-pass, it'd need to tell the back end about
  4830. function BAR so it could start emitting executable code (for the I(1) = 5
  4831. line), but what calling sequence would it give for BAR?  Answer: it
  4832. couldn't give a definitive calling sequence, because if, say, the next
  4833. executable line is
  4834.  
  4835.     C = A // B
  4836.  
  4837. then the calling sequence for BAR would be the same as for FOO in the
  4838. previous example (though B's length argument would be ignored, since BAR
  4839. declares its own length for B), whereas if the next executable line is
  4840.  
  4841.     C = A // B()
  4842.  
  4843. then B is a CHARACTER _function_, not _variable_, and therefore no length
  4844. parameter for B is passed, meaning BAR has, in C terms, six arguments
  4845. instead of seven.  (Of course, the caller has to know this too, but that's
  4846. not important here.)
  4847.  
  4848. There are other examples like this, some real hairy (how to handle
  4849. alternate ENTRY points in one pass, especially given the facts that
  4850. discovery of alternate entries can happen long into executable code and
  4851. that the back end doesn't understand alternate entries yet) and some just
  4852. annoying to handle properly in the back end (like how variable/ array
  4853. "static" initialization can be the last thing prior to an END statement,
  4854. and after lots of uses of the variable/array).
  4855.  
  4856. So while most of the g77 front end still is designed for one-pass use, the
  4857. parts that interface to the back end are build-time switchable between
  4858. one/two pass, and for building g77 itself, two passes always are used.
  4859. (The front end is designed to be fairly independent of the back end used,
  4860. or even of whether it is part of a compiler vs., say, part of a
  4861. source-code checker or transformer.  It doesn't save whitespace info in
  4862. its internal trees, so it's not completely flexible. :-)
  4863.  
  4864. A truly language-independent back end would not have these problems, I
  4865. guess, and the gcc back end definitely was designed from C's point of
  4866. view.  But it was nowhere near as hard to interface and otherwise deal
  4867. with as I expected, based on my other experiences with compiler internals,
  4868. and certainly the source code didn't cost me anything (plug, plug :-).
  4869. --
  4870. James Craig Burley, Software Craftsperson    burley@gnu.ai.mit.edu
  4871. -- 
  4872. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4873. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4874.  
  4875.  
  4876. From compilers Mon Feb  8 16:23:58 EST 1993
  4877. Newsgroups: comp.compilers
  4878. Path: iecc!compilers-sender
  4879. From: vaillant@fermina.informatik.rwth-aachen.de (Stefan Vaillant)
  4880. Subject: Re: Compiler construction in C++ and OOD
  4881. Message-ID: <93-02-069@comp.compilers>
  4882. Keywords: OOP, C++
  4883. Sender: compilers-sender@iecc.cambridge.ma.us
  4884. Organization: Rechnerbetrieb Informatik - RWTH Aachen
  4885. References: <93-02-032@comp.compilers>
  4886. Date: Mon, 8 Feb 1993 18:22:36 GMT
  4887. Approved: compilers@iecc.cambridge.ma.us
  4888.  
  4889. vivek@sequent.com (Vivek Buzruk) writes:
  4890. >I will be happy if any one tells whether any complete compiler is written
  4891. >in C++ either. Also in what way C++ is used, only as a better C or flavor
  4892. >of OOD.
  4893.  
  4894. Sather, an Eiffel dialect, is implemented with object-orientation in mind.
  4895. The compiler is written in Sather (of course), but IMHO it is worth having
  4896. a look at it, even if you are interesseted in C++.
  4897.  
  4898. The compiler has the following structure: The front-end is written in
  4899. yacc. The action-parts construct an abstract syntax tree. Each node of
  4900. this tree is an object and has an individual interface.  For example, the
  4901. node which represents the IF-statement has the following attributes:
  4902.  
  4903. class COND_STMTOB is
  4904.    test:      EXPREOB;   -- reference to expression node
  4905.    then_part: LST_STMTOB; -- List of statements
  4906.    elsif_part:LST_STMTOB;
  4907.    else_part: LST_STMTOB;
  4908.    ...
  4909. end;
  4910.  
  4911. Every node (or object) has some methods for doing a semantic check and for
  4912. generating code.  (This is not quite correct. I had only a quick look at
  4913. the source
  4914.  one year ago.)
  4915.  
  4916. You can obtain sather (incl. source code of the compiler) from
  4917. icsi-ftp.berkeley.edu.
  4918.  
  4919. IMHO this is not totally new, but clean and easy to understand.
  4920.  
  4921. You might also have a look at
  4922.   - the book of Rumbaugh et. all. "Object Oriented Modeling and Design".
  4923.     They have some examples with syntax trees representing
  4924.     expressions.
  4925.   - the Eiffel scanner/parser library.
  4926.  
  4927. ---------------
  4928. Stefan Vaillant
  4929. vaillant@pool.informatik.rwth-aachen.de
  4930. -- 
  4931. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4932. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4933.  
  4934.  
  4935. From compilers Thu Feb 11 15:39:47 EST 1993
  4936. Newsgroups: comp.compilers
  4937. Path: iecc!compilers-sender
  4938. From: drh@Princeton.EDU
  4939. Subject: Iburg now available
  4940. Message-ID: <93-02-070@comp.compilers>
  4941. Keywords: tools, parse, FTP
  4942. Sender: compilers-sender@iecc.cambridge.ma.us
  4943. Organization: Compilers Central
  4944. Date: Wed, 10 Feb 1993 04:42:23 GMT
  4945. Approved: compilers@iecc.cambridge.ma.us
  4946.  
  4947. Iburg, a program that generates a fast tree parser, is now available.  It
  4948. is compatible with Burg. Both programs accept a cost-augmented tree
  4949. grammar and emit a C program that discovers an optimal parse of trees in
  4950. the language described by the grammar. They have been used to construct
  4951. fast optimal instruction selectors for use in code generation.
  4952.  
  4953. Burg uses BURS; Iburg's matchers do dynamic programming at compile time.
  4954. Its matchers are slower but can be useful during development and for
  4955. teaching. The generated code is easy to read and to debug. It mirrors the
  4956. BURS specification in the same way that the code for a recursive-descent
  4957. parser mirrors its LL(1) grammar. Iburg has been used in compiler courses
  4958. and is described in the forthcoming LOPLAS paper "Engineering a simple,
  4959. efficient code generator generator."
  4960.  
  4961. Iburg and its documentation are available via anonymous ftp from
  4962. ftp.cs.princeton.edu (128.112.152.13) in pub/iburg.tar.Z.
  4963.  
  4964. Christopher W. Fraser, AT&T Bell Laboratories, cwf@research.att.com
  4965. David R. Hanson, Princeton University, drh@princeton.edu
  4966. Todd A. Proebsting, University of Arizona, todd@cs.arizona.edu
  4967. -- 
  4968. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4969. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4970.  
  4971.  
  4972. From compilers Thu Feb 11 15:40:40 EST 1993
  4973. Newsgroups: comp.compilers
  4974. Path: iecc!compilers-sender
  4975. From: BUSCHMAN@VM1.NoDak.EDU
  4976. Subject: TMS7000 C compiler wanted
  4977. Message-ID: <93-02-071@comp.compilers>
  4978. Keywords: C, question
  4979. Sender: compilers-sender@iecc.cambridge.ma.us
  4980. Organization: North Dakota Higher Education Computer Network
  4981. Date: Wed, 10 Feb 1993 16:27:38 GMT
  4982. Approved: compilers@iecc.cambridge.ma.us
  4983.  
  4984. I'm looking or a compiler for the IBM PC that will compile a C program to a
  4985. TMS7000 format....  Does anyone have something like this?  Does it even
  4986. exist?? Where can I get it./...  Thanks
  4987.                           Respond be e-mail  Thank YOU!
  4988.  
  4989. Buschman@vm1.nodak.edu
  4990. Buschman@plains.nodak.edu
  4991. -- 
  4992. Send compilers articles to compilers@iecc.cambridge.ma.us or
  4993. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  4994.  
  4995.  
  4996. From compilers Thu Feb 11 15:41:44 EST 1993
  4997. Xref: iecc comp.arch:26023 comp.parallel:5143 comp.compilers:4242
  4998. Newsgroups: comp.arch,comp.parallel,comp.compilers
  4999. Path: iecc!compilers-sender
  5000. From: Lori Lynn Avirett-Mackenzie <lori@au-bon-pain.lcs.mit.edu>
  5001. Subject: MIT Summer Course Announcement
  5002. Message-ID: <93-02-072@comp.compilers>
  5003. Keywords: dataflow, courses
  5004. Sender: compilers-sender@iecc.cambridge.ma.us
  5005. Organization: MIT Lab for Computer Science, Cambridge, Mass.
  5006. Date: Wed, 10 Feb 1993 18:55:02 GMT
  5007. Approved: compilers@iecc.cambridge.ma.us
  5008.  
  5009. ---------------- COURSE ANNOUNCEMENT: PLEASE POST  ----------------
  5010.  
  5011. Parallel Computing: Dataflow Architectures and Languages
  5012.   (with Programming Laboratory on Monsoon Dataflow Machines)
  5013.  
  5014. Monday, August 2 through Friday, August 6, 1993
  5015.  
  5016. Massachusetts Institute of Technology
  5017. Summer Session Program 6.83s
  5018.                  ----------------
  5019.                   Course Abstract
  5020.  
  5021. The only thing holding back the widespread use of parallel computers is
  5022. software. Most of the difficulty of parallel programming is attributable
  5023. to our von Neumann legacy - imperative languages and sequential processor
  5024. architectures.  By switching to functional languages, one may start
  5025. writing parallel programs without even realizing it.  Dataflow
  5026. architectures further simplify the compilation problem by providing cheap
  5027. synchronization.
  5028.  
  5029. A central theme of the course is Id, an implicit parallel language.  The
  5030. participant will get a chance to evaluate via laboratory experience
  5031. whether Id is a fad or a real alternative to standard imperative languages
  5032. extended for parallelism, such as C with threads, Multi-Lisp, and Fortran
  5033. 9X.  The participant will also get an opportunity to compare Id to purely
  5034. functional languages.  Compilation of Id for both dataflow and von Neumann
  5035. machines will be discussed at length.
  5036.  
  5037. The other theme of the course is dataflow architectures. We will discuss
  5038. why these architectures are better building blocks for parallel computers
  5039. than modern RISC architectures. Today's dataflow architectures borrow much
  5040. from traditional architectures; however, they take the most aggressive
  5041. approach to multi-threading, that is, rapid context switching to tolerate
  5042. long memory latencies and frequent synchronization waits.  The participant
  5043. will get hands-on experience on Monsoon dataflow machines produced by
  5044. Motorola, and a chance to conduct experiments on emulators of other
  5045. dataflow machines.  We will also discuss several supercomputer-class
  5046. dataflow machines that are currently under construction.
  5047.  
  5048.                ----------------
  5049.                Course Outline:
  5050.  
  5051. Implicit Parallel Programming:
  5052.   Programming with higher-order functions and non-strict data structures;
  5053.   Rewrite rules and reduction; Algebraic and abstract data types; Arrays
  5054.   and I-structures; M-structures and non-determinism.
  5055.  
  5056. Architectures:
  5057.   Fundamental issues in high-performance parallel architectures; Static and
  5058.   dynamic dataflow machines; Split phase memory references; I-structure
  5059.   memory; Multi-threaded architectures; Hybrid von Neumann-dataflow
  5060.   architectures.
  5061.  
  5062. Compilation:
  5063.   Dataflow program graphs; Translation to dataflow graphs; Lambda- lifting
  5064.   and supercombinators; Loop, array and procedure call optimization.
  5065.  
  5066. Resource management and performance:
  5067.   Resource managers; Experimental results on MIT dataflow machines.
  5068.  
  5069.                ----------------
  5070. Laboratory:
  5071.   Morning and afternoon lecture sessions will be followed by late-
  5072.   afternoon laboratory sessions in writing, debugging, running and
  5073.   analyzing the performance of Id programs on a Monsoon dataflow machine
  5074.   and on software emulators.  Experienced assistants will be available in
  5075.   the laboratory.
  5076.                ----------------
  5077. The Target Audience:
  5078.   Understanding dataflow principles can benefit users and designers of all
  5079.   parallel systems, i.e., parallel languages, architectures, compilers and
  5080.   resource managers.  In addition to computer scientists and electrical
  5081.   engineers, the course is also useful for people working in scientific
  5082.   programming, signal processing, real-time computing and artificial
  5083.   intelligence.
  5084.  
  5085. Staff:
  5086.   The program will be taught by professor Arvind of the MIT Department of
  5087.   Electrical Engineering and Computer Science.
  5088.  
  5089. ----------------
  5090. FOR MORE INFORMATION:
  5091.  
  5092. For a more detailed brochure (including application forms and
  5093. information about housing and fees), please contact:
  5094.  
  5095.     Lori Avirett-Mackenzie
  5096.     Rm 209
  5097.     MIT Laboratory for Computer Science
  5098.     545 Technology Square, Cambridge, MA 02139, USA
  5099.  
  5100.     lori@lcs.mit.edu              Tel: (617)-253-6837
  5101.                                       Fax: (617)-253-6652
  5102. -- 
  5103. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5104. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5105.  
  5106.  
  5107. From compilers Thu Feb 11 15:43:33 EST 1993
  5108. Newsgroups: comp.compilers
  5109. Path: iecc!compilers-sender
  5110. From: sandeep@csl32h.csl.ncsu.edu (Sandeep Kumar)
  5111. Subject: Data flow analysis tool wanted
  5112. Message-ID: <93-02-073@comp.compilers>
  5113. Keywords: dataflow, question
  5114. Sender: compilers-sender@iecc.cambridge.ma.us
  5115. Organization: NCSU, Raleigh
  5116. Date: Wed, 10 Feb 1993 23:19:39 GMT
  5117. Approved: compilers@iecc.cambridge.ma.us
  5118.  
  5119. Hello,
  5120.  
  5121. I am looking for a commercial/educational/research Tool for doing
  5122. Data Flow Analysis for a given Abstract Syntax tree. More
  5123. specifically for languages like C/C++.  I would appreciate any such
  5124. info. mailed to me.  Any pointers in this direction are most welcome.
  5125.  
  5126. Thanks in advance.
  5127. Sandeep.
  5128. -----
  5129. Email: sandeep@csl32h.csl.ncsu.edu
  5130.  
  5131. Sandeep Kumar
  5132. Dept of ECE, Box 7911,
  5133. NCSU, Raleigh, NC-27606
  5134. (O) 919 515 3861  (R) 919 859 4178
  5135. -- 
  5136. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5137. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5138.  
  5139.  
  5140. From compilers Thu Feb 11 15:44:55 EST 1993
  5141. Newsgroups: comp.compilers
  5142. Path: iecc!compilers-sender
  5143. From: schrod@iti.informatik.th-darmstadt.de (Joachim Schrod)
  5144. Subject: Re: fast compilers [Re: Thompson's 2c vs. gcc]
  5145. Message-ID: <93-02-074@comp.compilers>
  5146. Keywords: performance, linker, comment
  5147. Sender: compilers-sender@iecc.cambridge.ma.us
  5148. Organization: TH Darmstadt, FG Systemprogrammierung
  5149. References: <93-01-205@comp.compilers> <93-02-063@comp.compilers>
  5150. Date: Thu, 11 Feb 1993 09:40:22 GMT
  5151. Approved: compilers@iecc.cambridge.ma.us
  5152.  
  5153. psu@cs.duke.edu (Peter Su) writes:
  5154. > There was an SP&E paper on an incremental linker a while back that said it
  5155. > increased UNIX compile cycles by huge factors.
  5156.  
  5157. I think you meant the following TOPLAS article. (I just had the reference
  5158. handy :)
  5159.  
  5160. @article{comp:quong:incremental-linking,
  5161.  author = {Russel W. Quong and Mark A. Linton},
  5162.  title = {Linking Programs Incrementally},
  5163.  journal = toplas,
  5164.  volume = 13,
  5165.  number = 1,
  5166.  month = jan,
  5167.  year = 1991,
  5168.  pages = {1-20},
  5169.  annote = {Describes an in-place incremental linking done by a
  5170.     daemon in the background. Needs {\it lots\/} of main memory. Linking
  5171.     times are proportional to the size of the changed modules, not to the
  5172.     size of the executable (as usual).}
  5173. }
  5174.  
  5175. Joachim
  5176. --
  5177. Joachim Schrod            Email: schrod@iti.informatik.th-darmstadt.de
  5178. Computer Science Department
  5179. Technical University of Darmstadt, Germany
  5180. [This came up in compilers a few years ago.  Apparently it works great but
  5181. never made it into the Unix mainstream. -John]
  5182. -- 
  5183. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5184. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5185.  
  5186.  
  5187. From compilers Thu Feb 11 15:45:48 EST 1993
  5188. Xref: iecc comp.compilers:4245 comp.lang.c:40803 comp.unix.questions:33147
  5189. Newsgroups: comp.compilers,comp.lang.c,comp.unix.questions
  5190. Path: iecc!compilers-sender
  5191. From: cide@ad-10.Naitc.Com (Curtis Ide)
  5192. Subject: Third Party ANSI C Compiler for Amdahl UTS
  5193. Message-ID: <93-02-075@comp.compilers>
  5194. Summary: Looking for third party ANSI C compiler, debugger for Amdahl UTS
  5195. Keywords: C, debug, question
  5196. Sender: compilers-sender@iecc.cambridge.ma.us
  5197. Organization: AC Nielsen Co., Bannockburn IL
  5198. Date: Thu, 11 Feb 1993 15:45:02 GMT
  5199. Approved: compilers@iecc.cambridge.ma.us
  5200.  
  5201. Does any one know of any third-party or aftermarket ANSI C Language
  5202. compilers and symbolic debuggers which support Amdahl UTS?  Evidently the
  5203. latests versions of gcc have dropped support for UTS.
  5204.  
  5205. Please respond via e-mail to:    (I do not read this news group regularly)
  5206.     cide@nis.naitc.com
  5207.  
  5208. Thanks in advance,
  5209. Curtis Ide
  5210. Lead Engineer
  5211. AC Nielsen
  5212. -- 
  5213. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5214. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5215.  
  5216.  
  5217. From compilers Tue Feb 16 11:12:19 EST 1993
  5218. Newsgroups: comp.compilers
  5219. Path: iecc!compilers-sender
  5220. From: ahe@NMSU.Edu
  5221. Subject: HELP: filters for word processor
  5222. Message-ID: <93-02-076@comp.compilers>
  5223. Keywords: tools, question
  5224. Sender: compilers-sender@iecc.cambridge.ma.us
  5225. Organization: Compilers Central
  5226. Date: Thu, 11 Feb 1993 22:40:08 GMT
  5227. Approved: compilers@iecc.cambridge.ma.us
  5228.  
  5229. I wrote a filter program translating documents from FrameMaker to
  5230. BBN/Slate in the language Perl. The program works fine and can translate
  5231. most media types (include graphics) now. I am very interested to know if
  5232. there is someone else working in translating document and data formats.
  5233. What language and technique are they using? Are there any articles or
  5234. technical reports available?
  5235.  
  5236. I am very appreciative of any help.
  5237.  
  5238. Amy
  5239. -- 
  5240. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5241. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5242.  
  5243.  
  5244. From compilers Tue Feb 16 11:16:25 EST 1993
  5245. Newsgroups: comp.compilers
  5246. Path: iecc!compilers-sender
  5247. From: sriram@tcs.com (Sriram Srinivasah)
  5248. Subject: Info on Unix based interactive profilers
  5249. Message-ID: <93-02-077@comp.compilers>
  5250. Keywords: tools, question, performance
  5251. Sender: compilers-sender@iecc.cambridge.ma.us
  5252. Organization: Teknekron Communications, Inc
  5253. Date: Fri, 12 Feb 1993 01:50:57 GMT
  5254. Approved: compilers@iecc.cambridge.ma.us
  5255.  
  5256. I posted this on comp.unix.wizards but got no response.
  5257.  
  5258. For some time I have toyed with the idea of writing an interactive
  5259. profiler for Unix. That is, instead of running gprof after the program has
  5260. finished running, I'd like to set breakpoints and analyze hotspots
  5261. interactively.
  5262.  
  5263. 1. Does such a beast exist already ?
  5264.  
  5265. 2. If not, why not? Am I missing something that makes it technically
  5266.    infeasible on Unix ?
  5267.  
  5268. 3. Can you point out some references on profilers, and if possible, those
  5269.    that specifically talk about Unix?
  5270.  
  5271. Thanx a lot.
  5272.  
  5273. Sriram
  5274. (sriram@tcs.com)
  5275. -- 
  5276. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5277. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5278.  
  5279.  
  5280. From compilers Tue Feb 16 11:17:48 EST 1993
  5281. Newsgroups: comp.compilers
  5282. Path: iecc!compilers-sender
  5283. From: parrt@ecn.purdue.edu (Terence J Parr)
  5284. Subject: To the users of PCCTS
  5285. Message-ID: <93-02-078@comp.compilers>
  5286. Keywords: tools, question, parse
  5287. Sender: compilers-sender@iecc.cambridge.ma.us
  5288. Organization: Compilers Central
  5289. Date: Fri, 12 Feb 1993 02:35:06 GMT
  5290. Approved: compilers@iecc.cambridge.ma.us
  5291.  
  5292. In order to help us improve PCCTS, we would like to obtain working sample
  5293. grammars from as many users as possible.  We are not interested in seeing
  5294. your proprietary PCCTS grammars, but just the structural properties of
  5295. real PCCTS grammars.  We have included a simple C program that will
  5296. extract this information from your PCCTS grammars.
  5297.  
  5298. For each grammar, please send email to pccts@ecn.purdue.edu with the
  5299. Subject line:
  5300.  
  5301. Subject: sample
  5302.  
  5303. The email should contain:
  5304.  
  5305. [1]    A phrase describing what the grammar is used for, e.g.,
  5306.     "Database query language", "Fortran cross referencer", etc.
  5307.  
  5308. [2]    Your name, as you would like it to appear in acknowledgements
  5309.     in papers using statistics partly derived from you grammar.
  5310.     If you would prefer not to be listed as a contributor (i.e.,
  5311.     to avoid any implication that you endorse our research),
  5312.     please indicate this by saying "No acknowledgement".
  5313.  
  5314. [3]    Your stripped grammar.  The stripped grammar is produced by
  5315.     first using "antlr -p" to generate a version of your grammar
  5316.     without actions.  That output is then filtered by the
  5317.     following C program, which will convert all terminal and
  5318.     nonterminal names into generic names.  Although we would
  5319.     accept your original grammar, these two simple transformations
  5320.     allow you to send us the information we want without
  5321.     compromising the privacy of your work.
  5322.  
  5323. ---- C program to rename grammar terminals and nonterminals ----
  5324. /* Input:  a grammar processed by "antlr -p"
  5325.  * Output: grammar with all symbols renamed generically
  5326.  */
  5327. #include <stdio.h>
  5328. #include <ctype.h>
  5329.  
  5330. #define MAX_ATOM_SIZE    1025
  5331. #define MAX_NEWID_SIZE    16
  5332.  
  5333. #define TOKEN    1
  5334. #define RULE    2
  5335. #define Eof        3
  5336.  
  5337. #define RETURN(_t)    {token = _t; return;}
  5338.  
  5339. typedef struct _map {
  5340.             char *id;
  5341.             char newid[MAX_NEWID_SIZE];
  5342.             struct _map *next;
  5343.         } map;
  5344.  
  5345. static map *mapping = NULL;
  5346. static int c;
  5347. static int token;
  5348. static char lexbuf[MAX_ATOM_SIZE];
  5349.  
  5350. /* say malloc is 'char *' as some C compilers don't do 'void *' */
  5351. extern char *malloc();
  5352.  
  5353. static char *mapid();
  5354. static map *new_mapping_entry();
  5355. static char *newid();
  5356. static void lex();
  5357.  
  5358. main(argc, argv)
  5359. int argc;
  5360. char **argv;
  5361. {
  5362.     if (argc != 1) {
  5363.         fprintf(stderr,
  5364.             "Usage: %s <action_free_grammar >renamed_grammar\n",
  5365.             argv[0]);
  5366.         exit(1);
  5367.     }
  5368.  
  5369.     c = getchar();
  5370.     lex();
  5371.  
  5372.     while ( token != Eof )
  5373.     {
  5374.         printf(" %s\n", mapid(&(lexbuf[0])));
  5375.         lex();
  5376.     }
  5377.     putchar('\n');
  5378.     return(0);
  5379. }
  5380.  
  5381. static void
  5382. lex()
  5383. {
  5384.     char *p;
  5385.  
  5386. try_again:
  5387.  
  5388.     while ( isspace(c) ) { c = getchar(); }
  5389.  
  5390.     lexbuf[0] = '\0';
  5391.     if ( c == EOF ) RETURN(Eof);
  5392.  
  5393.     if ( c=='"' )
  5394.     {
  5395.         p = &(lexbuf[0]);
  5396.         *p++ = c;
  5397.         c = getchar();
  5398.         while ( p<&lexbuf[MAX_ATOM_SIZE-2] )
  5399.         {
  5400.             if ( c=='"' ) {*p++ = '"'; c = getchar(); break;}
  5401.             if ( c=='\\' )
  5402.             {
  5403.                 *p++ = c;
  5404.                 c = getchar();
  5405.             }
  5406.             *p++ = c;
  5407.             c = getchar();
  5408.         }
  5409.         *p = '\0';
  5410.         RETURN(TOKEN);
  5411.     }
  5412.     else if ( islower(c) || isupper(c) || c=='_' )
  5413.     {
  5414.         for (p=&(lexbuf[0]); !isspace(c); c=getchar())
  5415.         {
  5416.             *p++ = c;
  5417.         }
  5418.         *p = '\0';
  5419.         if ( islower(lexbuf[0]) ) {RETURN(RULE);}
  5420.         else RETURN(TOKEN);
  5421.     }
  5422.     else
  5423.     {
  5424.         printf(" %c", c);
  5425.         c = getchar();
  5426.         goto try_again;
  5427.     }
  5428. }
  5429.  
  5430. /* if id is not already defined, create a new id for it and store in
  5431.  * 'mapping' return newid field of (possibly new) entry for id
  5432.  */
  5433. static char *
  5434. mapid(id)
  5435. char *id;
  5436. {
  5437.     map *p;
  5438.     char *prefix;
  5439.  
  5440.     /* is 'id' in 'mapping' already? */
  5441.     for (p=mapping; p!=NULL && strcmp(p->id, id)!=0; p=p->next)
  5442.     {
  5443.         ;
  5444.     }
  5445.     if ( p == NULL )    /* new mapping? */
  5446.     {
  5447.         p = new_mapping_entry(id);
  5448.         p->next = mapping;
  5449.         mapping = p;
  5450.         if ( islower(id[0]) ) prefix = "n";
  5451.         else prefix = "T";
  5452.         strcpy(&(p->newid[0]), newid(prefix));
  5453.     }
  5454.     return &(p->newid[0]);
  5455. }
  5456.  
  5457. static char *
  5458. newid(prefix)
  5459. char *prefix;
  5460. {
  5461.     static char buf[MAX_NEWID_SIZE];
  5462.     static int i = 1;
  5463.  
  5464.     sprintf(&(buf[0]), "%s%d", prefix, i++);
  5465.     return &(buf[0]);
  5466. }
  5467.  
  5468. static map *
  5469. new_mapping_entry(id)
  5470. char *id;
  5471. {
  5472.     map *p = (map *) malloc(sizeof(map));
  5473.  
  5474.     if ( p == NULL )
  5475.     {
  5476.         fprintf(stderr, "fatal: out of memory\n");
  5477.         exit(1);
  5478.     }
  5479.     p->id = malloc(strlen(id)+1);
  5480.     if ( p->id == NULL )
  5481.     {
  5482.         fprintf(stderr, "fatal: out of memory\n");
  5483.         exit(1);
  5484.     }
  5485.     strcpy(p->id, id);
  5486.     return p;
  5487. }
  5488. -- 
  5489. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5490. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5491.  
  5492.  
  5493. From compilers Tue Feb 16 11:18:27 EST 1993
  5494. Newsgroups: comp.compilers
  5495. Path: iecc!compilers-sender
  5496. From: drh@Princeton.EDU
  5497. Subject: Iburg paper available
  5498. Message-ID: <93-02-079@comp.compilers>
  5499. Keywords: code, tools, FTP
  5500. Sender: compilers-sender@iecc.cambridge.ma.us
  5501. Organization: Compilers Central
  5502. References: <93-02-070@comp.compilers>
  5503. Date: Sat, 13 Feb 1993 13:35:39 GMT
  5504. Approved: compilers@iecc.cambridge.ma.us
  5505.  
  5506. In response to our recent comp.compilers announcement about the
  5507. availabililty Iburg <93-02-070@comp.compilers>, several comp.compilers
  5508. readers have asked about the electronic availability of the
  5509. forthcoming LOPLAS paper that describes Iburg, "Engineering a simple,
  5510. efficient code generator generator."
  5511.  
  5512. PostScript for this paper is included in pub/iburg.tar.Z, which is
  5513. available via anonymous ftp from ftp.cs.princeton.edu
  5514. (128.112.152.13).
  5515.  
  5516. -- 
  5517. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5518. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5519.  
  5520.  
  5521. From compilers Tue Feb 16 11:19:43 EST 1993
  5522. Xref: iecc comp.compilers:4250 comp.lang.fortran:9134 comp.lang.c:41055 comp.lang.ada:7642
  5523. Newsgroups: comp.compilers,comp.lang.fortran,comp.lang.c,comp.lang.ada
  5524. Path: iecc!compilers-sender
  5525. From: Perrault <pep@mbunix.mitre.org>
  5526. Subject: IBM/370 code generation by FORTRAN, C or ADA hosted on Sun
  5527. Message-ID: <93-02-080@comp.compilers>
  5528. Followup-To: poster
  5529. Keywords: Fortran, C, Ada, IBM, question
  5530. Sender: compilers-sender@iecc.cambridge.ma.us
  5531. Organization: The MITRE Corp., Bedford, Ma.
  5532. Distribution: usa
  5533. Date: Sat, 13 Feb 1993 19:45:41 GMT
  5534. Approved: compilers@iecc.cambridge.ma.us
  5535.  
  5536. I am looking for a compiler, in order of preference, for FORTRAN, C or Ada
  5537. that is hosted on a UNIX workstation (preferrably a Sun SPARC) that
  5538. generates IBM/370 code.  Thanks.
  5539.  
  5540. Philip E. Perrault                (804) 766-1275
  5541. The MITRE Corporation                (804) 766-1102 (fax)
  5542. Langley AFB, Hampton, VA            pep@mitre-lang.af.mil
  5543. -- 
  5544. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5545. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5546.  
  5547.  
  5548. From compilers Tue Feb 16 11:21:06 EST 1993
  5549. Xref: iecc comp.compilers:4251 misc.jobs.offered:23866
  5550. Newsgroups: comp.compilers,misc.jobs.offered
  5551. Path: iecc!compilers-sender
  5552. From: compilers-jobs@iecc.cambridge.ma.us
  5553. Subject: Compiler positions available for week ending February 14
  5554. Message-ID: <93-02-081@comp.compilers>
  5555. Keywords: jobs
  5556. Sender: compilers-sender@iecc.cambridge.ma.us
  5557. Organization: Compilers Central
  5558. Date: Sun, 14 Feb 1993 13:00:02 GMT
  5559. Approved: compilers@iecc.cambridge.ma.us
  5560.  
  5561. This is a digest of ``help wanted'' and ``position available'' messages
  5562. received at comp.compilers during the preceding week.  Messages must
  5563. advertise a position having something to do with compilers and must also
  5564. conform to the guidelines periodically posted in misc.jobs.offered.  To
  5565. respond to a job offer, send mail to the author of the message.  To submit
  5566. a message, mail it to compilers@iecc.cambridge.ma.us.
  5567.  
  5568.  
  5569. -------------------------------
  5570.  
  5571. Date: Wed, 10 Feb 1993 14:31:42 -0800
  5572. From: Larry Meadows <lfm@pgroup.com>
  5573. Subject: Compiler-related job openings
  5574. Organization: The Portland Group, Portland, OR
  5575.  
  5576. The Portland Group (PGI) is seeking to fill three positions as listed
  5577. below.  None of the positions are entry-level.
  5578.  
  5579. PGI is involved in compiler and tools development for high performance
  5580. computer systems.  PGI is located in Wilsonville, Oregon, a suburb of
  5581. Portland.
  5582.  
  5583. Please send resumes to lfm@pgroup.com (ascii or postscript, no
  5584. TeX), or FAX or Mail to:
  5585.  
  5586.     The Portland Group
  5587.     9160 S.W. Pioneer Court, Suite H
  5588.     Wilsonville, OR  97070
  5589.     FAX:    (503) 682-2637
  5590.     Attention: Personnel
  5591.  
  5592. ===
  5593. Technical Marketing
  5594.  
  5595. Seeking experienced technical marketing professional.
  5596.  
  5597. Desired skills:
  5598.     Proficiency in C, Fortran, Assembly language
  5599.     Experienced in benchmarking, debugging, vector/parallel processing
  5600.     Knowledge of Intel i860 and Sparc architectures
  5601.     Knowledge/experience with data-parallelism and compiler
  5602.      optimization evaluation
  5603.  
  5604. Responsibilities:
  5605.     Performance analysis
  5606.     Analysis of compiled code and suggestions for improvement
  5607.     Customer code porting/tuning
  5608.     Representation at technical and trade shows.
  5609.  
  5610.  
  5611. ===
  5612. Compiler Developer
  5613.  
  5614. Seeking mid-level compiler developer to work in the area of interprocedural
  5615. analysis and distributed memory compilation systems.
  5616.  
  5617. Desired skills:
  5618.     Proficient in C and Fortran.
  5619.     C, C++, and/or Fortran compiler experience required.
  5620.     Knowledge of flow and data analysis techniques helpful.
  5621.     Knowledge of Sparc, i860, or similar architectures helpful.
  5622.     Knowledge of vector/parallel/distributed computing helpful.
  5623.  
  5624. ===
  5625. Tools Developer
  5626.  
  5627. Seeking software engineer to help develop analysis tools, including
  5628. performance analysis, profiling, distributed memory optimization.
  5629.  
  5630. Desired skills:
  5631.     Proficient in C.
  5632.     Knowledge of profiling tools required.
  5633.     Experience with database support for interprocedural
  5634.       information processing helpful.
  5635.     Knowledge of Fortran and GUI (X/Motif/Openlook) helpful.
  5636.     Knowledge of Sparc, i860, or similar architectures helpful.
  5637.     Knowledge of vector/parallel/distributed computing helpful.
  5638.  
  5639.  
  5640. -------------------------------
  5641.  
  5642. Date: Wed, 10 Feb 93 17:18:37 PST
  5643. From: K.C. Chu <chu@ca.merl.com>
  5644. Subject: Compiler position available at Mitsubishi Sunnyvale
  5645. Organization: Mitsubishi Electric Research Laboratories, Inc.
  5646.  
  5647. Sunnyvale R&D Lab of Mitsubishi Electric Research Labs, Inc. (MERL) is
  5648. looking for someone with excellent experience in design (and
  5649. implementation) of (machine- and language-independent) optimizers using
  5650. data-flow analysis, inter-procedural analysis, run-time/profile
  5651. information feedback, etc.
  5652.  
  5653. US citizenship or green card required.  Please send inquiries or your
  5654. resume to
  5655.  
  5656.         K. C. Chu
  5657.     Sunnyvale R&D Lab
  5658.         Mitsubishi Electric Research Labs, Inc.
  5659.     1050 E. Arques Ave.
  5660.     Sunnyvale, CA 94086
  5661. -- 
  5662. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5663. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5664.  
  5665.  
  5666. From compilers Tue Feb 16 11:25:28 EST 1993
  5667. Newsgroups: comp.compilers
  5668. Path: iecc!compilers-sender
  5669. From: andreasa@dhhalden.no (ANDREAS ARFF)
  5670. Subject: Effectiveness of compilers today
  5671. Message-ID: <93-02-082@comp.compilers>
  5672. Keywords: performance, question, comment
  5673. Sender: compilers-sender@iecc.cambridge.ma.us
  5674. Organization: Ostfold College
  5675. Date: Sun, 14 Feb 1993 16:31:08 GMT
  5676. Approved: compilers@iecc.cambridge.ma.us
  5677.  
  5678. I suppose this has been up to discussion here for a couple of times, and
  5679. if it is a faq, please forgive me (though it sounds unlikely).
  5680.  
  5681. Many years ago I heard for the first time the statement that compilers
  5682. generated more efficient code than many assembler programmers did.  And
  5683. that is what I took it for, a statement.  Doing some tests between me and
  5684. Borland C showed that borland was quite a bit better than me. Even though
  5685. I havn't done any assembler codeing for over a year now, I found it
  5686. supprising that it should beat me with so much.
  5687.  
  5688. Could someone tell me more about this. Are there any tests between common
  5689. compilers and assembler programmers. Who is the best?
  5690.  
  5691. Arff
  5692.  
  5693. PS. The test wasn't scientific at all, and the code wasn't very large :-)
  5694.  Just curious...
  5695. [This has indeed been discussed to death in the past.  My impression is that
  5696. for a small chunk of code, a human can almost always meet or beat a compiler,
  5697. but for large chunks people aren't as persistent as compilers at optimizing
  5698. assember code.  Reports of concrete experience are welcomed, messages along
  5699. the lines of "I don't believe any compiler can code as well as I do"
  5700. cheerfully discarded. -John]
  5701. -- 
  5702. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5703. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5704.  
  5705.  
  5706. From compilers Tue Feb 16 11:28:24 EST 1993
  5707. Newsgroups: comp.compilers
  5708. Path: iecc!compilers-sender
  5709. From: ross@spam.maths.adelaide.edu.au (Ross Williams)
  5710. Subject: Looking for languages that compile to C
  5711. Message-ID: <93-02-083@comp.compilers>
  5712. Keywords: tools, Eiffel, question
  5713. Sender: compilers-sender@iecc.cambridge.ma.us
  5714. Organization: Stats Pure & Applied Maths, Uni of Adelaide, Australia
  5715. Date: Mon, 15 Feb 1993 13:47:43 GMT
  5716. Approved: compilers@iecc.cambridge.ma.us
  5717.  
  5718. Netters,
  5719.  
  5720. I'm assisting a Government Department to set up a programming development
  5721. environment and as part of that process I'm helping them choose
  5722. programming languages.
  5723.  
  5724. For a couple of years I've been wavering between Ada and C/C++. In my
  5725. view, for most programming, Ada is obviously better (don't flame me - I
  5726. already KNOW that many people disagree with this), but the world has
  5727. grasped C so firmly and there are so many compilers for it, and so many
  5728. libraries for it, and so much support for it, that it seems to have become
  5729. compulsary :-) Certainly, the Government Department seems pretty
  5730. enthusiastic about it, and would probably consider it a "courageous
  5731. decision" not to use it.
  5732.  
  5733. Anyway, it occurred to me that, given that everyone has to live with C, it
  5734. might be that the best compromise is to find some nice clean language
  5735. whose compiler is written in a portable subset of C and which compiles
  5736. down to a portable subset of C. This would have the following advantages:
  5737.  
  5738.    * Most of the time we wouldn't have to program in C. We could use a
  5739.    civilized typesafe language with lots of nice object orientedness and
  5740.    so on.
  5741.  
  5742.    * But if we needed to use a C library, Unix interface, or do some
  5743.    grotty hacks, we could temporarily break through and use C.
  5744.  
  5745.    * Code written in the higher language would be MORE portable than C code
  5746.    because it is GUARANTEED to compile to a portable subset of C (whereas
  5747.    a C programmer might inadvertently do something non-portable). So
  5748.    you get the best of the high-level portability of Ada
  5749.    (well-definedness), and the pragmatic practical portability of C
  5750.    (a compiler on almost every existing Von Neumann architecture machine :-).
  5751.  
  5752. A quick look around reveals the language Eiffel (which compiles to C) and
  5753. which seems to be even better than Ada (perhaps far better). I have read
  5754. Betrand Meyer's book "Object-oriented Software Construction" and was very
  5755. impressed. However, I just peeked in comp.lang.eiffel and found [an article
  5756. saying that Eiffel seems to be moribund. -John]
  5757.  
  5758. Anyway, I think it would be great if there was a civilized language out
  5759. there for which compilers exist that compile down to C. Does anyone know
  5760. of any others besides Eiffel? I'm looking more for civilized 3GLs than
  5761. constraining 4GLs designed for screen design and query lookup.
  5762.  
  5763. Feel free to post replies, but please be sure to email them to me too as I
  5764. may not get to see all the postings in the groups I post to - we have a
  5765. fairly short news lifetime here. Also, unless you specify otherwise,
  5766. emailing me will constitute permission to reproduce your email publicly in
  5767. postings, compendiums, FTP archives and so on that I may wish to create on
  5768. this topic. Email me if you want a summary of replies.
  5769.  
  5770. Thanks very much,
  5771.  
  5772. Ross Williams
  5773. ross@spam.adelaide.edu.au
  5774.  
  5775. PS: I'm sure many C hackers will object to my use of the word "civilized".
  5776. However, think about this. I have a friend (a competent but not too
  5777. experienced programmer) who programs in a primitive BASIC using GOSUBS and
  5778. GOTOS and so on. He understands the power C could give him and wants the
  5779. power, but he treasures too much the way the BASIC interpreter clearly
  5780. identifies his programming errors (as opposed to blowing the machine
  5781. apart). As for me, I have learnt to live with C through subversive
  5782. techniques such as using my own heap manager that places check bytes at
  5783. the ends of allocated blocks, and by including magic numbers and checksums
  5784. in instances of supposedly closed abstractions.
  5785. -- 
  5786. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5787. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5788.  
  5789.  
  5790. From compilers Tue Feb 16 11:39:29 EST 1993
  5791. Newsgroups: comp.compilers
  5792. Path: iecc!compilers-sender
  5793. From: Thomas.Tornblom@nexus.comm.se (Thomas Tornblom)
  5794. Subject: Generic peep-hole optimizer available?
  5795. Message-ID: <93-02-084@comp.compilers>
  5796. Keywords: optimize, tools, question
  5797. Sender: compilers-sender@iecc.cambridge.ma.us
  5798. Organization: Communicator Nexus AB
  5799. Date: Tue, 16 Feb 1993 09:22:27 GMT
  5800. Approved: compilers@iecc.cambridge.ma.us
  5801.  
  5802. Is there any such beast?
  5803.  
  5804. I'm developing software for a microcontroller built on a 65C02 core and
  5805. I'm using the Aztec C v3.2 compiler. Now this compiler produces some
  5806. really pessimal code, besides the outright defunct code... but still its
  5807. better than assembly.
  5808.  
  5809. What I would like to get hold of is some kind of generic peep-hole
  5810. optimizer that could be tweaked to recognize and optimize 6502
  5811. assembly.
  5812.  
  5813. Replacing the compiler is not an option, far too much of the code
  5814. built before my time depends on this compiler.
  5815.  
  5816. Thanks,
  5817. Thomas
  5818. --
  5819. Real life:  Thomas To:rnblom          Email:  Thomas.Tornblom@Nexus.Comm.SE
  5820. Snail mail: Communicator Nexus AB     Phone:  +46 18 171814
  5821.             Box 857                   Fax:    +46 18 696516
  5822.             S - 751 08 Uppsala, Sweden
  5823.  
  5824. -- 
  5825. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5826. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5827.  
  5828.  
  5829. From compilers Tue Feb 16 11:40:41 EST 1993
  5830. Xref: iecc comp.compilers:4255 comp.arch:26146
  5831. Newsgroups: comp.compilers,comp.arch
  5832. Path: iecc!compilers-sender
  5833. From: tom@derby.cs.wisc.edu (Tom Ball)
  5834. Subject: Branch prediction paper available
  5835. Message-ID: <93-02-085@comp.compilers>
  5836. Keywords: architecture, report, FTP
  5837. Sender: compilers-sender@iecc.cambridge.ma.us
  5838. Organization: University of Wisconsin, Madison -- Computer Sciences Dept.
  5839. Date: Mon, 15 Feb 1993 19:18:01 GMT
  5840. Approved: compilers@iecc.cambridge.ma.us
  5841.  
  5842. A new technical report on heuristics for program-based static branch
  5843. prediction is available via anonymous ftp from ftp.cs.wisc.edu in
  5844. directory "tech-reports/reports/93" as file "tr1137.ps.Z" The file is
  5845. compressed postscript.
  5846.  
  5847.  
  5848. Thomas Ball       Computer Sciences Dept.
  5849. tom@cs.wisc.edu   University of Wisconsin-Madison
  5850.  
  5851. ------------------------------------------------------------------------------
  5852. Title: "Branch Prediction for Free"
  5853.  
  5854. Thomas Ball and James R. Larus
  5855. tom@cs.wisc.edu,  larus@cs.wisc.edu
  5856. University of Wisconsin-Madison, Comp. Sci. Dept. TR #1137
  5857.  
  5858. Abstract:
  5859.  
  5860. Many compilers rely on branch prediction to improve program
  5861. performance by identifying frequently executed regions and by aiding
  5862. in scheduling instructions.  *Profile-based* predictors require a
  5863. time-consuming and inconvenient compile-profile-compile cycle in
  5864. order to make predictions.  We present a *program-based* branch
  5865. predictor that performs well for a large and diverse set of programs
  5866. written in C and Fortran.  In addition to using natural loop analysis
  5867. to predict branches that control the iteration of loops, we focus on
  5868. heuristics for predicting non-loop branches, which dominate the
  5869. dynamic branch count of many programs.  The heuristics are simple and
  5870. require little program analysis, yet they are effective in terms of
  5871. coverage and miss rate.  Although program-based prediction does not
  5872. equal the accuracy of profile-based prediction, we believe it reaches
  5873. a sufficiently high level to be useful.  Additional type and semantic
  5874. information available to a compiler would enhance our heuristics.
  5875. -- 
  5876. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5877. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5878.  
  5879.  
  5880. From compilers Wed Feb 17 11:16:00 EST 1993
  5881. Newsgroups: comp.compilers
  5882. Path: iecc!compilers-sender
  5883. From: Andreas Koschinsky <koschins@cs.tu-berlin.de>
  5884. Subject: Alpha - A Compiler Generator based on Attribute Grammars
  5885. Message-ID: <93-02-086@comp.compilers>
  5886. Keywords: parse, tools, attribute
  5887. Sender: compilers-sender@iecc.cambridge.ma.us
  5888. Organization: Compilers Central
  5889. Date: Tue, 16 Feb 1993 21:28:42 GMT
  5890. Approved: compilers@iecc.cambridge.ma.us
  5891.  
  5892. I have written a compiler generator. The generator is called Alpha and
  5893. uses attribute grammars as specification calculus. Alpha is the result of
  5894. a thesis at Technische Universitaet Berlin. I am looking for someone who
  5895. would like to test and use Alpha. I have written some compilers with Alpha
  5896. which work well.
  5897.  
  5898. Some words about Alpha. Alpha generates compilers from a compiler
  5899. specification. This specification describes a compiler in terminology of
  5900. attribute grammars. Parser and Scanner are generated by means of Bison and
  5901. Flex from the compiler specification. Alpha generates an ASE-evaluator
  5902. (Jazayeri and Walter). Attributes are divided into one-pass- and
  5903. multi-pass-attributes. The generated compiler stores instances of
  5904. one-pass-attributes in a stack and multi-pass-attributes in usual memory.
  5905. This saves much memory since 80-90% of the attributes of an attribute
  5906. grammar are one-pass-attributes. Alpha generates no parse tree and
  5907. optimizes the evaluation. Alpha does not include a back end generator.
  5908.  
  5909. If you are interested or you need more information, you can mail me. There
  5910. is a full documentation on the specification calculus and the internals of
  5911. Alpha.  The documentation is in german since it is a thesis at a german
  5912. university.
  5913.  
  5914. Andreas Koschinsky
  5915. Email: koschins@cs.tu-berlin.de
  5916. -- 
  5917. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5918. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5919.  
  5920.  
  5921. From compilers Wed Feb 17 11:16:58 EST 1993
  5922. Newsgroups: comp.compilers
  5923. Path: iecc!compilers-sender
  5924. From: pardo@cs.washington.edu (David Keppel)
  5925. Subject: Re: Effectiveness of compilers today
  5926. Message-ID: <93-02-087@comp.compilers>
  5927. Keywords: performance
  5928. Sender: compilers-sender@iecc.cambridge.ma.us
  5929. Organization: Computer Science & Engineering, U. of Washington, Seattle
  5930. References: <93-02-082@comp.compilers>
  5931. Date: Tue, 16 Feb 1993 23:06:06 GMT
  5932. Approved: compilers@iecc.cambridge.ma.us
  5933.  
  5934. andreasa@dhhalden.no (ANDREAS ARFF) writes:
  5935. >[Who produces fastest code: compiler or human?]
  5936.  
  5937. John Levine writes:
  5938. >[A human can almost always meet or beat a compiler on small chunks.]
  5939.  
  5940. For extremely small chunks, Superopt nearly-exhaustively checks all
  5941. instruction combinations and is hard to beat.
  5942.  
  5943. See:
  5944.  
  5945.   T. Granlund and R. Kenner, "Eliminating branches using a
  5946.   superoptimizer and the GNU C compiler,"  ACM SIGPLAN '92
  5947.   Conf. on Prog. Lang. Design and Impl., June 1992, SF CA.
  5948.   [work done on IBM RS/6000; Kenner's email address is
  5949.   kenner@vlsi1.ultra.nyu.edu]
  5950.  
  5951. I've forgotten where Henry Massalin's original Superoptimizer paper
  5952. appeared, but it *may* be available as an online TR from
  5953. `cs.columbia.edu'.
  5954.  
  5955. It is usually hard for a human to do *worse* than a compiler because the
  5956. human can simply use the compiler to produce code then examine the code
  5957. for possible improvements.  Humans are good enough at pattern matching
  5958. that they can usually find improvements that the compiler missed.
  5959.  
  5960. At the risk of beating dead horse (power):
  5961.  
  5962. In my (limited) experience it is ``easy'' to get a given code fragment to
  5963. go 10-20% faster, but it's rarely worthwhile: if a routine is 10% faster
  5964. and program spends 10% of its time there you've just sped up the program
  5965. by 1%.  While there are certainly programs where this is worthwhile, they
  5966. aren't the ones that I usually work on.
  5967.  
  5968. Often, one can stare at the source code for a while and figure out ways to
  5969. ``trick'' source code to produce faster code -- by manually unrolling
  5970. loops, for example.  Although this suffers from some of the same problems
  5971. as writing assembly (optimizations for one machine are often
  5972. pessimizations for another machine), such source code `tweaks' are often
  5973. more robust, portable, and reliable.
  5974.  
  5975. I think there was a time when the majority of the community accepted
  5976. ``unsafe at any speed.''  Today, I think most people have given up on
  5977. assembly for all but the most key routines because even machines that give
  5978. binary compatability often have better performance if you recompile with a
  5979. compiler that knows about the machine.  Assembly code can't simply be
  5980. recompiled[*], it has to be rewritten.  Thus, I think the focus, even
  5981. among performance freaks, has changed to one of trying to expose the best
  5982. information for the compiler and writing the best compilers.
  5983.  
  5984. [*] Unless you have an optimizing assembler, in which case you're just
  5985. writing in a very low high-level language and you're using a compiler!
  5986.  
  5987. Of course I'm a compiler person, so it's expectable I'd hold some such
  5988. opinion.
  5989.  
  5990.         ;-D on  ( Recoding a dead horse )  Pardo
  5991. -- 
  5992. Send compilers articles to compilers@iecc.cambridge.ma.us or
  5993. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  5994.  
  5995.  
  5996. From compilers Wed Feb 17 13:58:00 EST 1993
  5997. Newsgroups: comp.compilers
  5998. Path: iecc!compilers-sender
  5999. From: kanze@us-es.sel.de (James Kanze)
  6000. Subject: Effectiveness of compilers today
  6001. Message-ID: <93-02-088@comp.compilers>
  6002. Keywords: optimize
  6003. Sender: compilers-sender@iecc.cambridge.ma.us
  6004. Organization: Compilers Central
  6005. References:  <93-02-082@comp.compilers>
  6006. Date: Wed, 17 Feb 1993 14:17:26 GMT
  6007. Approved: compilers@iecc.cambridge.ma.us
  6008.  
  6009. ANDREAS ARFF writes:
  6010. |> Many years ago I heard for the first time the statement that compilers
  6011. |> generated more efficient code than many assembler programmers did.  [Is
  6012. |> this really true?]
  6013.  
  6014. Wouldn't this depend somewhat on the architecture of the target machine?
  6015. Machines such as the Intel 80x86 line are notoriously difficult to compile
  6016. to; an experienced programmer for such a processor will easily beat the
  6017. best compiler by a factor of two or more.  On the other hand, the late NSC
  6018. 32000 had an architecture designed to make life easy for the compiler, and
  6019. I would be surprized if anyone could beat a really good compiler by a
  6020. significant factor.
  6021.  
  6022. Along these lines, does anyone know of any research done on using semantic
  6023. information in register allocation.  For example, if as an 8086 assembler
  6024. programmer, I see a function definition:
  6025.     f( char* dst , const char* src )
  6026. I will immediately choose DI as the register for dst and SI for src (and
  6027. not the inverse).  While I wouldn't expect the compiler to recognize the
  6028. significance of the symbol dst itself, I could imagine deferring actual
  6029. choice of registers until after the entire function has been parsed,
  6030. counting different kinds of use during the parse, and then using this
  6031. information to optimize register allocation.
  6032. --
  6033. James Kanze                             email: kanze@us-es.sel.de
  6034. GABI Software, Sarl., 8 rue du Faisan, F-67000 Strasbourg, France
  6035. -- 
  6036. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6037. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6038.  
  6039.  
  6040. From compilers Wed Feb 17 14:02:11 EST 1993
  6041. Newsgroups: comp.compilers
  6042. Path: iecc!compilers-sender
  6043. From: "Josh N. Pritikin" <jpab+@andrew.cmu.edu>
  6044. Subject: Re: Effectiveness of compilers today
  6045. Message-ID: <93-02-089@comp.compilers>
  6046. Keywords: optimize
  6047. Sender: compilers-sender@iecc.cambridge.ma.us
  6048. Organization: Compilers Central
  6049. References: <93-02-082@comp.compilers>
  6050. Date: Wed, 17 Feb 1993 15:37:48 GMT
  6051. Approved: compilers@iecc.cambridge.ma.us
  6052.  
  6053. >Could someone tell me more about this. Are there any tests between common
  6054. >compilers and assembler programmers. Who is the best?
  6055.  
  6056. >[This has indeed been discussed to death in the past.  My impression is that
  6057. >for a small chunk of code, a human can almost always meet or beat a compiler,
  6058. >but for large chunks people aren't as persistent as compilers at optimizing
  6059.  
  6060. Assembly programmers will never have job security!  Take a look at the GNU
  6061. superoptimizer ---
  6062.  
  6063. GSO is a function sequence generator that uses an exhaustive
  6064. generate-and-test approach to find the shortest instruction sequence for a
  6065. given function.  You have to tell the superoptimizer which function and
  6066. which CPU you want to get code for.
  6067.  
  6068. Sample GSO results:
  6069.  
  6070.   SPARC code for i5 = ((signed) i0 > (signed) i1):
  6071.           subcc   %i1,%i0,%i2
  6072.           srl     %i1,31,%i3
  6073.           sra     %i0,31,%i4
  6074.           addx    %i4,%i3,%i5
  6075.  
  6076.   Faster 80x86 code than the standard cmpl/seta/and for
  6077.   ecx = ((unsigned) eax > (unsigned) edx):
  6078.           cmpl    %eax,%edx
  6079.           sbbl    %ecx,%ecx
  6080.           negl    %ecx
  6081.  
  6082.   MC88000 code for 'find first set bit', i.e., r6 = ffs(r2):
  6083.           subu.co r3,r0,r2
  6084.           and     r4,r3,r2
  6085.           addu.ci r5,r4,r4
  6086.           ff1     r6,r5
  6087.  
  6088.   POWER (RS/6000) code for r6 = ((unsigned) r3 < (unsigned) r4) + r5
  6089.           sf      r6,r4,r3
  6090.           sfe     r7,r5,r6
  6091.           sf      r8,r7,r6
  6092.  
  6093. Aide from the CPUs in the examples above, GSO generates code for
  6094. MC680x0, Amd290xx, Pyramid(SP,AP,XP), and Alpha.
  6095.  
  6096. joshp@cmu.edu
  6097. -- 
  6098. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6099. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6100.  
  6101.  
  6102. From compilers Wed Feb 17 14:04:33 EST 1993
  6103. Newsgroups: comp.compilers
  6104. Path: iecc!compilers-sender
  6105. From: burley@apple-gunkies.gnu.ai.mit.edu (Craig Burley)
  6106. Subject: Re: Effectiveness of compilers today
  6107. Message-ID: <93-02-090@comp.compilers>
  6108. Keywords: optimize, design
  6109. Sender: compilers-sender@iecc.cambridge.ma.us
  6110. Organization: Free Software Foundation 545 Tech Square Cambridge, MA 02139
  6111. References: <93-02-082@comp.compilers>
  6112. Date: Wed, 17 Feb 1993 18:37:59 GMT
  6113. Approved: compilers@iecc.cambridge.ma.us
  6114.  
  6115. andreasa@dhhalden.no (ANDREAS ARFF) writes:
  6116.  
  6117.    Could someone tell me more about this. Are there any tests between common
  6118.    compilers and assembler programmers. Who is the best?
  6119.  
  6120. I have a general observation about the issue of the quality of code
  6121. produced by compilers versus humans, which is this:
  6122.  
  6123. Compilers are at a disadvantage in most cases because they are not given
  6124. all the information we humans have at our disposal and they are given
  6125. restrictions that we humans can selectively ignore in cases that the
  6126. compilers can't.
  6127.  
  6128. Note that, in one sense, this statement could even extend from "compilers"
  6129. to "assemblers", but in another, let's assume that the human has, via the
  6130. assembler, complete control of and access to the underlying target (a UNIX
  6131. executable, an MS-DOS .EXE file, whatever).  This seems to not always be
  6132. the case with some assembler/linker toolsets (one can't always specify
  6133. just what alignment is needed, as in "make sure this code starts at an
  6134. address such that dividing its byte offset by 16 yields a remainder of
  6135. 3"), but one can presumably always get around that restriction by writing
  6136. the entire application in a single monolithic assembler source chunk, even
  6137. using explicit octal/hex coding in place of mnemonic instructions where
  6138. necessary.  I.e., for the purposes of this article, assembler is to
  6139. machine-code target as a UNIX text editor is to a UNIX executable --
  6140. anything you need in an executable you should be able to make via the text
  6141. editor (if it's good), and, similarly, any machine-code target (executable
  6142. or .EXE file) you should be able to make (with varying degrees of effort
  6143. and elegance) via the assembler.
  6144.  
  6145. So, back to compilers.
  6146.  
  6147. The languages we use are a major part of the problem, but not all of it --
  6148. compiler technology is much of the rest of the problem, then throw in
  6149. library and O/S interfaces and implementations for a small portion.
  6150.  
  6151. A simple example of the language problem is C's enum:
  6152.  
  6153. enum { RED, GREEN, BLUE } color;
  6154.  
  6155. Some programmers typing this mean "I need three constants with distinct
  6156. values named RED, GREEN, and BLUE", other mean "I need three constants
  6157. named RED, GREEN, and BLUE with the values 0, 1, and 2, respectively".
  6158.  
  6159. C compilers must assume the latter statement (generally speaking) is
  6160. meant, when in fact in many cases only the former (a weaker one) is.
  6161.  
  6162. The difference from an optimization point of view is that the way the
  6163. constants might be used in a tight loop might well affect the values a
  6164. compiler assigns to them.  A human might decide to give them the values 0,
  6165. 4, and 8, or even 0, 256, and 512, by observing that a few cycles are
  6166. saved by not having to multiply a variable of "enum color" type by some
  6167. factor to get a jump-table offset to some code or data.  A C compiler is
  6168. not likely to have this ability (safely) unless it is globally optimizing
  6169. across all program modules.
  6170.  
  6171. A sample solution would be a language construct that does literally mean
  6172. "I don't care about the values as long as they're distinct", but in the
  6173. context of C, it would not represent enough of an improvement to counter
  6174. the "noise factor" it would introduce to the language.  That is, few
  6175. programs would benefit from it, few programmers would use it, but many
  6176. people would be put off by having to learn yet another construct in what
  6177. is supposed to be a small language (see C++).
  6178.  
  6179. The "global optimization" approach -- optimizing the entire program rather
  6180. than just portions of it -- provides a machine-assisted way to get around
  6181. many such language barriers.
  6182.  
  6183. However, that approach has two faults I can think of when it comes to
  6184. trying to match or exceed human potential:
  6185.  
  6186.     1.  In trying to get around missing modes of programmer expression,
  6187.         i.e. in trying to reconstruct knowledge already in the
  6188.     programmer's head (such as "I don't really care what the actual
  6189.     values are for RED, GREEN, and BLUE") by doing a full analysis of
  6190.     the program, the global optimizer spends what often is too much
  6191.     time doing basic analysis and not really optimizing, and it can
  6192.     _still_ fail to reconstruct that knowledge.
  6193.  
  6194.     2.  All useful programs do some kind of I/O, but even global
  6195.         optimization does not provide for complete information on
  6196.         the formats of files accessed and their constraints.
  6197.  
  6198. An example of both problems is, what if the code opens a file and writes
  6199. and reads variables of type "enum color" to it?  Does that mean the
  6200. programmer really wants them to be 0, 1, or 2, or can the compiler
  6201. substitute 0, 256, and 512 there as well as for memory-resident copies?
  6202. The answer is: let's ask the human compiler.  If that human (as the
  6203. programmer) knows the file is only a temporary scratchpad, then the
  6204. arbitrary values are fine.  If it is a permanent data base, then the 0, 1,
  6205. and 2 values must be used and, if appropriate, translated accordingly (if
  6206. it is still optimal to do so).
  6207.  
  6208. However, a human also can be aware that the file is a permanent data base
  6209. but one that is created and maintained by the program under construction,
  6210. so the values are in flux but about to become permanent.  And, the human
  6211. also can realize that whatever values are best for the running time of the
  6212. program are what should be in the file.  And that the format of the file
  6213. isn't _yet_ fixed but might be down the road.  And when and how to trash
  6214. (or convert) the file when the optimal values change due to changes the
  6215. programmer makes in the code.  And when the file has become fixed (the
  6216. program has been put into production use, so file conversion is no longer
  6217. a valid way to deal with "more optimal" values), the human knows to no
  6218. longer change the file-resident values for "enum color" even if the
  6219. program gets to where it wants more-optimal values in memory.
  6220.  
  6221. How are these things communicated to a compiler?  I don't know of any
  6222. language that permits it in a way that approaches the convenience needed
  6223. to make such optimizations more feasible via an HLL than coding most or
  6224. all of the program in assembler in the first place.  (I do have lots of
  6225. ideas _how_ to make this sufficiently convenient, but they're way beyond
  6226. the scope of this post.)
  6227.  
  6228. Of course, the C programmer can play with all these things while mucking
  6229. around with "enum { RED = 0, GREEN = 256, BLUE = 512 } color;", and that's
  6230. what a lot of people use C for anyway, but remember, we're talking about
  6231. the difference between a compiler (such as for C) and a human doing the
  6232. compilation.  In the C-compiler case, unless the programmer constantly
  6233. looks at the assembler output from the compiler and notices places where
  6234. different constants could improve performance, the programmer won't know
  6235. to make these changes, whereas the human compiler can see that while
  6236. coding (while optimizing).
  6237.  
  6238. "enum color" is a rather weak example, seeing as there are other missing
  6239. language facilities that affect typical program optimization to a much
  6240. greater degree, but it is a simple one.  And, in the right application, it
  6241. could have a huge impact -- even something like a 2x difference in how
  6242. fast graphics are displayed on a color screen, or more.
  6243.  
  6244. Note that speed isn't always the only issue.  Sometimes space is.
  6245. Sometimes speed is the only overall issue, but given a machine's
  6246. architecture (such as the 486's cache design), space becomes a dominant
  6247. issue in optimizing certain stretches of code.  And humans often know more
  6248. about when to make those tradeoffs than compilers do, especially when
  6249. things like run-time error reporting (comparatively rare) is included -- a
  6250. code path that inevitably leads to a diagnostic is not only less important
  6251. to optimize than an alternate path that doesn't, but should be optimized
  6252. perhaps for space than for speed so the alternate path runs faster (I've
  6253. even written assembler code that lets the alternate path run further
  6254. before branching to the diagnostic patch so the typical case runs faster;
  6255. there's no way, with today's languages, I could tell a compiler to do this
  6256. elegantly).
  6257.  
  6258. A more classic example is this:
  6259.  
  6260. void
  6261. array_mult (float a[], float b[], float c[], int n)
  6262. {
  6263. int i;
  6264.  
  6265. for (i = 0; i < n; ++i)
  6266.   c[i] = a[i] * b[i];
  6267. }
  6268.  
  6269. Here is the above C code directly mapped to Fortran (not as a plug-in
  6270. replacement but as a programmer-level replacement):
  6271.  
  6272.       SUBROUTINE ARRAYMULT (A, B, C, N)
  6273.       INTEGER N
  6274.       REAL A(N), B(N), C(N)
  6275.       INTEGER I
  6276. C
  6277.       DO I=1, N
  6278.          C(I) = A(I) * B(I)
  6279.       END DO
  6280. C
  6281.       END
  6282.  
  6283. With regard to human implementation in machine code, and assuming the
  6284. human has the full program available (i.e. globally optimizes), both
  6285. procedures can be compiled to exactly the same machine code, i.e. they are
  6286. identical.  However, a C compiler cannot ever, on some architectures, make
  6287. the C version run as fast as Fortran compiler can with the Fortran
  6288. version.
  6289.  
  6290. Why?  Because the Fortran language includes with the above code the
  6291. assumption that the array C does not overlap A or B with respect to the
  6292. temporary size specified via N during any invocation of ARRAYMULT.  For
  6293. example, the compiled code could start off (if it wanted to do something
  6294. this weird) by zeroing C(1) through C(N), or it could save the results of
  6295. the DO loop in a temporary array and copy that into C only after the whole
  6296. DO loop were finished, and, _by definition_, the code would have the same
  6297. effect on the running program.  C, of course, places no such restrictions
  6298. on the programmer's intentions.
  6299.  
  6300. Now, global optimization could help the C compiler determine that no
  6301. overlaps are involved in _some_ cases (and only after a potentially huge
  6302. amount of computation).  But if indices are read in from a terminal or
  6303. file, it cannot, whereas Fortran happily goes along assuming no overlaps
  6304. ever occur.  Period.  (Of course, if indices are read in from a file, and
  6305. could potentially violate the assumption, then that is a bug in the
  6306. Fortran implementation of the program that the C implementation would not
  6307. have -- I'm assuming a "clean" file here, constructed so it meets the
  6308. requirements of the program.)  The human programmer might well know that
  6309. the C version won't ever involve overlap, just as the Fortran version
  6310. doesn't, but the C compiler might not be able to intuit that.
  6311.  
  6312. This again highlights the "what is the context/format of data external to
  6313. the program?" question even global optimizers need to, and cannot always,
  6314. answer -- for the Fortran version, there's an implicit answer that the
  6315. compiler could conceivably use to an advantage beyond the no-overlap rules
  6316. mentioned, whereas for the C version, that implicit answer does not exist
  6317. (except in the programmer's head).
  6318.  
  6319. Again, there are plenty of other examples that can show a huge impact on
  6320. execution times (though the no-overlap one actually can have a huge impact
  6321. on some machines), but the above show how even simple, behind-the- scenes
  6322. assumptions made by the language designers (and hence the compilers) but
  6323. not necessarily by the programmers (or with no way to easily encode those
  6324. assumptions in the languages) can lessen a compiler's ability to match
  6325. that of a human.
  6326.  
  6327. Ultimately, it's best to use the most expressive language you can find to
  6328. express your intentions (one that allows you to express as much of you
  6329. knowledge as possible in a concise, yet elegant, fashion), and remain
  6330. aware of how the compiler is likely to optimize your code so you can
  6331. decide to use assembler when and where appropriate.  This ultimate cannot
  6332. be realized with today's tools, but I think the industry will make a
  6333. significant lurch in that direction within the next 10 years, and I'm
  6334. working on helping that happen in my spare time (i.e. when I'm not writing
  6335. a Fortran compiler :-).
  6336. --
  6337. James Craig Burley, Software Craftsperson    burley@gnu.ai.mit.edu
  6338. -- 
  6339. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6340. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6341.  
  6342.  
  6343. From compilers Wed Feb 17 19:35:03 EST 1993
  6344. Newsgroups: comp.compilers
  6345. Path: iecc!compilers-sender
  6346. From: jbuck@forney.berkeley.edu (Joe Buck)
  6347. Subject: Re: Effectiveness of compilers today
  6348. Message-ID: <93-02-091@comp.compilers>
  6349. Keywords: optimize
  6350. Sender: compilers-sender@iecc.cambridge.ma.us
  6351. Organization: U. C. Berkeley
  6352. References: <93-02-082@comp.compilers> <93-02-089@comp.compilers>
  6353. Date: Wed, 17 Feb 1993 20:56:39 GMT
  6354. Approved: compilers@iecc.cambridge.ma.us
  6355.  
  6356. Josh N. Pritikin <jpab+@andrew.cmu.edu> writes:
  6357. >Assembly programmers will never have job security!  Take a look at the GNU
  6358. >superoptimizer ---
  6359.  
  6360. The GNU superoptimizer uses exhaustive search.  This means that its
  6361. behavior is exponential.  It can still be useful in certain circumstances
  6362. (find the best sequence to generate a certain small function), but it's
  6363. not going to put anyone out of business.
  6364.  
  6365. The sequences shown in your example are all four instructions or fewer.
  6366. How fast its performance degrades as more instructions are required
  6367. depends on how good its heuristics are, but you can't get away from the
  6368. combinatorial explosion.
  6369. --
  6370. Joe Buck    jbuck@ohm.berkeley.edu
  6371. -- 
  6372. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6373. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6374.  
  6375.  
  6376. From compilers Wed Feb 17 19:36:38 EST 1993
  6377. Newsgroups: comp.compilers
  6378. Path: iecc!compilers-sender
  6379. From: "mohd hanafiah abdullah" <napi@cs.indiana.edu>
  6380. Subject: Re: Effectiveness of compilers today
  6381. Message-ID: <93-02-092@comp.compilers>
  6382. Keywords: performance
  6383. Sender: compilers-sender@iecc.cambridge.ma.us
  6384. Organization: Indiana University Computer Science, Bloomington
  6385. References: <93-02-082@comp.compilers> <93-02-087@comp.compilers>
  6386. Date: Wed, 17 Feb 1993 23:28:40 GMT
  6387. Approved: compilers@iecc.cambridge.ma.us
  6388.  
  6389. In most cases, programming in the large, a competent optimizing compiler
  6390. could produce faster code than a person can.
  6391.  
  6392. For instance, the compiler could readily do global register allocation by
  6393. using graph coloring, whereas the mentioned technique does not even cross
  6394. the person's mind at the time.  Well, even if it does it would be
  6395. infeasible for him/her to implement the allocation himself due to its
  6396. sheer size as well as impractical debugging time.
  6397.  
  6398. Have fun.
  6399.  
  6400. Napi
  6401. -- 
  6402. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6403. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6404.  
  6405.  
  6406. From compilers Wed Feb 17 23:35:24 EST 1993
  6407. Newsgroups: comp.compilers
  6408. Path: iecc!compilers-sender
  6409. From: moss@cs.cmu.edu (Eliot Moss)
  6410. Subject: Re: Effectiveness of compilers today
  6411. Message-ID: <93-02-093@comp.compilers>
  6412. Keywords: optimize, performance
  6413. Sender: compilers-sender@iecc.cambridge.ma.us
  6414. Reply-To: moss@cs.cmu.edu
  6415. Organization: Dept of Comp and Info Sci, Univ of Mass (Amherst)
  6416. References: <93-02-082@comp.compilers>
  6417. Date: Thu, 18 Feb 1993 03:37:37 GMT
  6418. Approved: compilers@iecc.cambridge.ma.us
  6419.  
  6420. At SIGPLAN a couple of years ago (SIGPLAN '91, I think; the one in
  6421. Toronto), Guy Steele gave a talk on optimizing certain kinds of numerical
  6422. programs for the CM-5, called "Fortran at N Gigaflops" (or some such, for
  6423. suitable N). They generally got better speedups than are practical for
  6424. humans because they unrolled loops and did heavy and intricate register
  6425. allocation. A human could do it in theory, but it's so tedious and easy to
  6426. make a mistake that it's much better for a compiler to do it. Furthermore,
  6427. the compiler can generate many more useful object programs much faster
  6428. than the human can do them in assembly. So this is a case where the
  6429. compiler wins by brute force.
  6430. --
  6431. J. Eliot B. Moss, Associate Professor    Visiting Associate Professor
  6432. Department of Computer Science        School of Computer Science
  6433. Lederle Graduate Research Center    Carnegie Mellon University
  6434. University of Massachusetts        5000 Forbes Avenue
  6435. Amherst, MA  01003            Pittsburgh, PA  15213-3891
  6436. (413) 545-4206, 545-1249 (fax)        (412) 268-6767, 681-5739 (fax)
  6437. Moss@cs.umass.edu            Moss@cs.cmu.edu
  6438. -- 
  6439. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6440. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6441.  
  6442.  
  6443. From compilers Wed Feb 17 23:53:42 EST 1993
  6444. Newsgroups: comp.compilers
  6445. Path: iecc!compilers-sender
  6446. From: moss@cs.cmu.edu (Eliot Moss)
  6447. Subject: Re: Looking for languages that compile to C
  6448. Message-ID: <93-02-094@comp.compilers>
  6449. Keywords: C, modula
  6450. Sender: compilers-sender@iecc.cambridge.ma.us
  6451. Reply-To: moss@cs.cmu.edu
  6452. Organization: Dept of Comp and Info Sci, Univ of Mass (Amherst)
  6453. References: <93-02-083@comp.compilers>
  6454. Date: Thu, 18 Feb 1993 03:43:28 GMT
  6455. Approved: compilers@iecc.cambridge.ma.us
  6456.  
  6457. By all means you should consider Modula-3. The Digital Equipment
  6458. Corporation's Systems Research Center has a compiler that produces C and
  6459. has been ported to a number of platforms. You can get it from
  6460. pub/DEC/Modula-3 on gatekeeper.dec.com. Also check out comp.lang.modula3,
  6461. including its FAQ, which lists the books out on Modula-3. Also, I note
  6462. that DEC SRC has a native compiler under development for a few platforms,
  6463. and my own research group at UMass Amherst is developing GNU Modula-3. SRC
  6464. and others have developed substantial working applications in Modula-3,
  6465. and you can get working Modula-3 implementations for free, now and in the
  6466. future.
  6467. --
  6468. J. Eliot B. Moss, Associate Professor    Visiting Associate Professor
  6469. Department of Computer Science        School of Computer Science
  6470. Lederle Graduate Research Center    Carnegie Mellon University
  6471. University of Massachusetts        5000 Forbes Avenue
  6472. Amherst, MA  01003            Pittsburgh, PA  15213-3891
  6473. (413) 545-4206, 545-1249 (fax)        (412) 268-6767, 681-5739 (fax)
  6474. Moss@cs.umass.edu            Moss@cs.cmu.edu
  6475. -- 
  6476. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6477. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6478.  
  6479.  
  6480. From compilers Thu Feb 18 00:10:03 EST 1993
  6481. Newsgroups: comp.compilers
  6482. Path: iecc!compilers-sender
  6483. From: preston@dawn.cs.rice.edu (Preston Briggs)
  6484. Subject: Re: Effectiveness of compilers today
  6485. Message-ID: <93-02-095@comp.compilers>
  6486. Keywords: optimize
  6487. Sender: compilers-sender@iecc.cambridge.ma.us
  6488. Organization: Rice University, Houston
  6489. References: <93-02-082@comp.compilers> <93-02-091@comp.compilers>
  6490. Date: Thu, 18 Feb 1993 04:15:03 GMT
  6491. Approved: compilers@iecc.cambridge.ma.us
  6492.  
  6493. jbuck@forney.berkeley.edu (Joe Buck) writes:
  6494.  
  6495. >The GNU superoptimizer uses exhaustive search.  This means that its
  6496. >behavior is exponential.
  6497.  
  6498. >How fast its performance degrades as more instructions are required
  6499. >depends on how good its heuristics are, but you can't get away from the
  6500. >combinatorial explosion.
  6501.  
  6502. I'm no fan of exponential algorithms, but in defense of the superoptimizer
  6503. work, I'll point out that it is used at compiler-generation time, not at
  6504. compile time.  Thus, it is possible to let it crunch away for a week
  6505. without impacting the eventual user.
  6506.  
  6507. It's similar to the idea of writing an exponential routine to search for
  6508. better ways to convert integer-multiply-by-a-constant to shifts, adds, and
  6509. subtracts.  There are known routines that do a good job, but an optimal
  6510. translation requires exponential search.  Therefore, build a searcher that
  6511. tries to beat your normal routine and let it run for a while (days, weeks,
  6512. ...).  Anytime it does a better job, write the result down and put it in a
  6513. hash table that you query before calling the normal routine.
  6514.  
  6515. Unfortunately, these things have somewhat limited applicability.  You can
  6516. use them to find nice translations of particular idioms that programmers
  6517. _might_ use; but wouldn't it be nice to attack the code that the
  6518. programmer really did write (e.g., most programs multiply by 4 and 8, easy
  6519. cases; very few programs multiply by 123456789).
  6520.  
  6521. Preston Briggs
  6522. -- 
  6523. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6524. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6525.  
  6526.  
  6527. From compilers Thu Feb 18 11:54:51 EST 1993
  6528. Xref: iecc comp.compilers:4266 comp.sources.wanted:15068
  6529. Newsgroups: comp.compilers,comp.sources.wanted
  6530. Path: iecc!compilers-sender
  6531. From: kit@philabs.philips.com (Karen Trovato)
  6532. Subject: Natural Language Parser Wanted
  6533. Message-ID: <93-02-096@comp.compilers>
  6534. Keywords: parse, question, comment
  6535. Sender: compilers-sender@iecc.cambridge.ma.us
  6536. Organization: Philips Laboratories, Briarcliff, New York
  6537. Date: Thu, 18 Feb 1993 15:21:48 GMT
  6538. Approved: compilers@iecc.cambridge.ma.us
  6539.  
  6540. I apologize if this is the incorrect forum for this request, but these
  6541. seem to be the most logical groups for posting on the net.
  6542.  
  6543. I am looking to buy or license yacc source for an english language parser
  6544. for development in a product. Perfection is not required.
  6545.  
  6546. Please send pointers to research, school projects, or existing products
  6547. via email, or contact me at the phone numbers or address below.
  6548.  
  6549. Thank you.
  6550.                 Karen I. Trovato - Member of Research Staff
  6551.                 Software and Services Dept.
  6552.                 Philips Laboratories
  6553.                 345 Scarborough Road, Briarcliff Manor, NY 10510
  6554.         Phone: (914)945-6233 Fax: (914) 945-6014
  6555.         kit@philabs.philips.com
  6556. [It is my impression that people gave up trying to parse natural language
  6557. using context-free methods in about 1966.  One of the examples in the
  6558. O'Reilly "lex & yacc" book is a tiny English parser, but by the time we
  6559. get to a dozen rules or so it becomes evident that it's never going to parse
  6560. more than a tiny grammar with a tiny vocabulary. -John]
  6561. -- 
  6562. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6563. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6564.  
  6565.  
  6566. From compilers Thu Feb 18 11:55:59 EST 1993
  6567. Newsgroups: comp.compilers
  6568. Path: iecc!compilers-sender
  6569. From: ebcrmb@ebc.ericsson.se (BO/EBC/KX/ZGE Michael Bergman 682 4958)
  6570. Subject: Conversion to LL(1)
  6571. Message-ID: <93-02-097@comp.compilers>
  6572. Keywords: LL(1), parse, question
  6573. Sender: compilers-sender@iecc.cambridge.ma.us
  6574. Organization: Compilers Central
  6575. Date: Thu, 18 Feb 1993 16:07:38 GMT
  6576. Approved: compilers@iecc.cambridge.ma.us
  6577.  
  6578. At the risk of being repetitive about this, I would *really* like someone
  6579. to to tell me (Jan..?) the algorithms for
  6580.  
  6581. a) Eliminating all epsilon productions from a CFG
  6582. b) Eliminating all cycles from a CFG
  6583.  
  6584. The left-recursion removal (and I suspect left-factoring as well, but this
  6585. is only a suspicion!) is only guaranteed to work if the grammar is
  6586. epsilon-free and cycle free.
  6587.  
  6588. I've read through a couple of old articles (Jan Schramp seems to have done
  6589. quite a lot of thinking in the area) and the subject interests me.
  6590.  
  6591. The left-factoring as described in the Dragon Book is IMO rather limited
  6592. as it only tries to get rid of "direct" FIRST overlap of the type:
  6593.  
  6594. A -> BC | BC | BC | ... | gamma
  6595.        1    2    3
  6596.  
  6597. where gamma represents all alternatives not beginning with B.  However,
  6598. there may still be FIRST-set overlap even if we do not have this kind of
  6599. "direct" production. Substitutions may give such a production, but then
  6600. one might run into a loop as Jan Schramp pointed out in an article dated
  6601. May 18 1992.
  6602.  
  6603. His example was:
  6604. S -> Aa | Bb
  6605. A -> cA | eps
  6606. B -> cB | eps
  6607.  
  6608. To get the common leading c in the same production, we substitute for A
  6609. and B on S's right side and get
  6610.  
  6611. S -> cAa | cBb | a | b
  6612. A -> cA | eps
  6613. B -> cB | eps
  6614.  
  6615. After factoring S, we run into a the same situation again with A and B
  6616. both having c in their FIRST sets.  Then Jan tries another approach and
  6617. first eliminates the epsilon productions:
  6618.  
  6619. S -> A | B
  6620. A -> cA | a
  6621. B -> cB | b
  6622.  
  6623. Then he wants to get the "direct" form of the common prefix situation:
  6624.  
  6625. S -> cA | a | cB | b
  6626. A -> cA | a
  6627. B -> cB | b
  6628.  
  6629. Factoring now gives:
  6630.  
  6631. S -> cD | a | b
  6632. D -> A | B
  6633.  
  6634. But D is equivalent to S, and we get S -> cS | a | b which is LL(1).
  6635.  
  6636.  
  6637. I'm wondering if the elimination of the epsilon productions was
  6638. significant.  It would be nice if we knew the left-factoring was guranteed
  6639. to work (without getting into a loop) if all epsilon productions are first
  6640. eliminted. Comments?
  6641.  
  6642. On the other hand, this might not lead anywhere in practice since after
  6643. the left-recursion removal, the grammar may again contain epsilon
  6644. pruductions.  These would then have to be removed using the algorithm I
  6645. was asking for, before we can apply the left-factoring. But the epsilon
  6646. elimination might very well re-introduce left-recursion.... :-(, I don't
  6647. know. On the other hand - maybe it does not!
  6648.  
  6649. I'm hoping someone out there is an expert on this.
  6650. --
  6651. Michael Bergman                Email: ebcrmb@ebc.ericsson.se
  6652. KX/ZGE                    Tfn:   +46 8 6824958
  6653. Ericsson Business Networks
  6654. S-135 83 Tyreso, Sweden
  6655. -- 
  6656. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6657. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6658.  
  6659.  
  6660. From compilers Thu Feb 18 23:56:36 EST 1993
  6661. Newsgroups: comp.compilers
  6662. Path: iecc!compilers-sender
  6663. From: roth@helena.cs.rice.edu (Jerry Roth)
  6664. Subject: Re: Effectiveness of compilers today
  6665. Message-ID: <93-02-098@comp.compilers>
  6666. Keywords: optimize, performance
  6667. Sender: compilers-sender@iecc.cambridge.ma.us
  6668. Organization: Rice University, Houston
  6669. References: <93-02-082@comp.compilers> <93-02-093@comp.compilers>
  6670. Date: Thu, 18 Feb 1993 16:45:40 GMT
  6671. Approved: compilers@iecc.cambridge.ma.us
  6672.  
  6673. moss@cs.cmu.edu writes:
  6674.  
  6675. >At SIGPLAN a couple of years ago (SIGPLAN '91, I think; the one in
  6676. >Toronto), Guy Steele gave a talk on optimizing certain kinds of numerical
  6677. >programs for the CM-5, called "Fortran at N Gigaflops" (or some such, for
  6678. >suitable N). They generally got better speedups than are practical for
  6679. >humans because they unrolled loops and did heavy and intricate register
  6680. >allocation. A human could do it in theory, but it's so tedious and easy to
  6681. >make a mistake that it's much better for a compiler to do it.
  6682.  
  6683. Here's the complete reference:
  6684.  
  6685. @InProceedings{BHMS:91,
  6686.     Author = {M. Bromley and S. Heller and T. McNerney and
  6687.           G. {Steele, Jr.}},
  6688.     Title = {Fortran at Ten Gigaflops:
  6689.         The {Connection Machine} Convolution Compiler},
  6690.     Booktitle = SIGPLAN91,
  6691.     Address = Toronto,
  6692.     Month = Jun,
  6693.     Year = 1991}
  6694.  
  6695. People also refer to this Convolution Compiler as the Stencil Compiler. It
  6696. only targets a strict subset of computational patterns known as stencils.
  6697. A user must separate the stencil from his application and place it in a
  6698. subroutine by itself, and then invoke this special compiler on it. The
  6699. compiler, after performing some pattern matching, simply generates calls
  6700. to some library routines. These routines are all *hand written microcode*.
  6701. Thus most of the work, including the intricate register allocation for
  6702. these specialized patterns, was all done by hand. The only real work done
  6703. at compile time is to determine the amount of loop unrolling and which
  6704. microcode routines to use, and this is not too difficult given that they
  6705. have limited their scope to only stencils. The impressive speed-ups
  6706. reported (from 5.6 gigaflops to 14 gigaflops) were measured against code
  6707. produced by the regular CM-2 fortran compiler.
  6708.  
  6709. Note, I am not knocking their work. I am really impressed by their ideas,
  6710. and hope to be able to accomplish similar things (but in a more general
  6711. fashion). I just wanted to point out that this work may have a lesser
  6712. impact on the human vs. compiler argument than initially indicated.
  6713.  
  6714. Thanks for your time,
  6715. Jerry Roth
  6716. Rice University
  6717. -- 
  6718. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6719. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6720.  
  6721.  
  6722. From compilers Thu Feb 18 23:57:24 EST 1993
  6723. Newsgroups: comp.compilers
  6724. Path: iecc!compilers-sender
  6725. From: drw@zermelo.mit.edu (Dale R. Worley)
  6726. Subject: Superoptimizers (was Re: Effectiveness of compilers today)
  6727. Message-ID: <93-02-099@comp.compilers>
  6728. Keywords: optimize
  6729. Sender: compilers-sender@iecc.cambridge.ma.us
  6730. Organization: MIT Dept. of Tetrapilotomy, Cambridge, MA, USA
  6731. References: <93-02-082@comp.compilers> <93-02-095@comp.compilers>
  6732. Date: Thu, 18 Feb 1993 17:01:35 GMT
  6733. Approved: compilers@iecc.cambridge.ma.us
  6734.  
  6735. preston@dawn.cs.rice.edu (Preston Briggs) writes:
  6736.    Unfortunately, [superoptimizers] have somewhat limited
  6737.    applicability.  You can use them to find nice translations of
  6738.    particular idioms that programmers _might_ use; but wouldn't it be
  6739.    nice to attack the code that the programmer really did write (e.g.,
  6740.    most programs multiply by 4 and 8, easy cases; very few programs
  6741.    multiply by 123456789).
  6742.  
  6743. I've wondered if it's possible to have a program grovel the ASTs of a
  6744. bunch of programs and extract out "common" combinations of operations that
  6745. should be candidates for superoptimizer investigation.
  6746.  
  6747. Dale Worley        Dept. of Math., MIT        drw@math.mit.edu
  6748. -- 
  6749. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6750. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6751.  
  6752.  
  6753. From compilers Thu Feb 18 23:58:54 EST 1993
  6754. Xref: iecc comp.compilers:4270 comp.sources.wanted:15077
  6755. Newsgroups: comp.compilers,comp.sources.wanted
  6756. Path: iecc!compilers-sender
  6757. From: johnm@cory.berkeley.edu (John D. Mitchell)
  6758. Subject: Re: Natural Language Parser Wanted
  6759. Message-ID: <93-02-100@comp.compilers>
  6760. Keywords: parse
  6761. Sender: compilers-sender@iecc.cambridge.ma.us
  6762. Organization: University of California, at Berkeley
  6763. References: <93-02-096@comp.compilers>
  6764. Date: Fri, 19 Feb 1993 00:50:47 GMT
  6765. Approved: compilers@iecc.cambridge.ma.us
  6766.  
  6767. kit@philabs.philips.com (Karen Trovato) writes:
  6768. >I am looking to buy or license yacc source for an english language parser
  6769. >for development in a product. Perfection is not required.
  6770. [...]
  6771. >[It is my impression that people gave up trying to parse natural language
  6772. >using context-free methods in about 1966.  One of the examples...]
  6773.  
  6774. Yep.  Natural language parsing/understanding/etc. has been a major branch
  6775. of the AI universe for a long time.  You should go over to comp.ai.nlang
  6776. (or something like that).
  6777.  
  6778. My understanding of the latest developments is that you can get actually
  6779. reasonably good understanding but only over limited knowledge domains.
  6780.  
  6781. Hope this helps,
  6782.         John
  6783.         johnm@cory.Berkeley.EDU
  6784. -- 
  6785. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6786. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6787.  
  6788.  
  6789. From compilers Thu Feb 18 23:59:59 EST 1993
  6790. Newsgroups: comp.compilers
  6791. Path: iecc!compilers-sender
  6792. From: Joydip Dass <jdass@cssc-melb.tansu.com.au>
  6793. Subject: C++ symbol table
  6794. Message-ID: <93-02-101@comp.compilers>
  6795. Keywords: C++, parse, question, comment
  6796. Sender: compilers-sender@iecc.cambridge.ma.us
  6797. Organization: Compilers Central
  6798. Date: Fri, 19 Feb 1993 02:05:54 GMT
  6799. Approved: compilers@iecc.cambridge.ma.us
  6800.  
  6801. Greetings.
  6802.  
  6803. I am currently trying to do some work on parsing some C++ code.  I am new
  6804. at this stuff so pardon my ignorance....
  6805.  
  6806. I have got hold of Jim Roskind`s C++ grammar.  I have also modified his
  6807. Flex input file to suit my purposes.  However, as he points out in his
  6808. documentation, the lexer he supplied does not include a SYMBOL TABLE and
  6809. does NOT KEEP TRACK OF CURRENT SCOPES.  I am in need of these
  6810. facilities....
  6811.  
  6812. My objectives are -
  6813. - To keep a list of all identifiers in the C++ code being parsed.
  6814. (Identifiers include - variables, #defines, and function names etc.)
  6815.  
  6816. - I want to be able to identify these things separately i.e. distinguish a
  6817. function name from a variable.  I also want to be able to tell different
  6818. types of variables apart e.g. a pointer declaration from a non-pointer
  6819. variable OR an int declaration from a register declaration.
  6820. - I would like to store these in some sort of a hash table to do the
  6821. fastest possible searches.
  6822.  
  6823. This sounds a bit vague at the moment, but if I can achieve these
  6824. particular objectives I will be better equipped to plan future directions.
  6825.  
  6826. I have read the bit on symbol tables in "lex & yacc" by Levine, Mason and
  6827. Brown.  It was most helpful in understanding the basic concepts of symbol
  6828. tabels etc.  However, if anyone out there has already worked on this
  6829. problem I would like to get hold of it.  I think what I am trying to do is
  6830. more complex than the examples in the book and any help would save me a
  6831. lot of time.
  6832.  
  6833. Many Thanks in advance to anyone who can help me.
  6834.  
  6835. Joydip Das
  6836. ----------------------------
  6837. jdass@cssc-melb.tansu.com.au
  6838. [Maybe you could extract what you need from g++. -John]
  6839. -- 
  6840. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6841. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6842.  
  6843.  
  6844. From compilers Fri Feb 19 13:07:08 EST 1993
  6845. Newsgroups: comp.compilers
  6846. Path: iecc!compilers-sender
  6847. From: pardo@cs.washington.edu (David Keppel)
  6848. Subject: Re: Effectiveness of compilers today
  6849. Message-ID: <93-02-102@comp.compilers>
  6850. Keywords: optimize
  6851. Sender: compilers-sender@iecc.cambridge.ma.us
  6852. Organization: Computer Science & Engineering, U. of Washington, Seattle
  6853. References: <93-02-082@comp.compilers> <93-02-095@comp.compilers>
  6854. Date: Fri, 19 Feb 1993 04:51:43 GMT
  6855. Approved: compilers@iecc.cambridge.ma.us
  6856.  
  6857. jbuck@forney.berkeley.edu (Joe Buck) writes:
  6858. >Superoptimizer uses exhaustive search and is thus exponential.
  6859.  
  6860. preston@dawn.cs.rice.edu (Preston Briggs) writes:
  6861. >In defense, I'll point out that it is used at compiler-generation time
  6862. >[thus it can crunch for a week w/o affecting compile time.]
  6863.  
  6864. The original Superoptmizer was available for the compiler writer, the
  6865. compiler, and the programmer.  As I recall, Henry told me the biggest
  6866. thing he'd ever tried with it was about 20 instructions and that took a
  6867. couple weeks (an Othello move generator; substantial speedup).  Henry also
  6868. used the Superoptimizer technique on longer sequences by Superoptimizing
  6869. windows of a few instructions, then moving the window.  As I recall, the
  6870. first pass would be run with a small window and would go fast; then the
  6871. window size would be increased once the ``obvious'' sequences were removed
  6872. by the first pass; and so on.  That way, Superoptimizer (which never
  6873. considered longer sequences) would only run with the large window when the
  6874. code in question was already reasonably tight.
  6875.  
  6876.         ;-D on  ( Sequence-ial logic )  Pardo
  6877. -- 
  6878. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6879. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6880.  
  6881.  
  6882. From compilers Fri Feb 19 13:08:19 EST 1993
  6883. Newsgroups: comp.compilers
  6884. Path: iecc!compilers-sender
  6885. From: kjb@cgl.citri.edu.au (Kendall Bennett)
  6886. Subject: Re: Effectiveness of compilers today
  6887. Message-ID: <93-02-103@comp.compilers>
  6888. Keywords: performance
  6889. Sender: compilers-sender@iecc.cambridge.ma.us
  6890. Organization: Collaborative Information Technology Research Institute
  6891. References: <93-02-082@comp.compilers> <93-02-087@comp.compilers>
  6892. Date: Fri, 19 Feb 1993 02:51:12 GMT
  6893. Approved: compilers@iecc.cambridge.ma.us
  6894.  
  6895. andreasa@dhhalden.no (ANDREAS ARFF) writes:
  6896. >[Who produces fastest code: compiler or human?]
  6897.  
  6898. Depends on what the code is and what it does.
  6899.  
  6900. John Levine writes:
  6901. >[A human can almost always meet or beat a compiler on small chunks.]
  6902.  
  6903. True, but as mentioned elsewhere, for how much speed improvement.
  6904.  
  6905. pardo@cs.washington.edu (David Keppel) writes:
  6906. >It is usually hard for a human to do *worse* than a compiler because the
  6907. >human can simply use the compiler to produce code then examine the code
  6908. >for possible improvements.  Humans are good enough at pattern matching
  6909. >that they can usually find improvements that the compiler missed.
  6910.  
  6911. Ok, now this is the entirely _wrong_ way to go about recoding something in
  6912. assembly language. If you examine the compiler's code, you will never get
  6913. anything more than about 10% speed improvement or so. The only time when
  6914. using assembly language is a real bonus, is when the task being peformed
  6915. is not very well suited to a compiler.
  6916.  
  6917. When recoding something in assembly, you need to take an entirely new look
  6918. at the problem and try to solve it using the full power of the machine at
  6919. hand, something that compilers are not particularly good at doing (taking
  6920. advantage of machine specific optimisations). The 80x86 range of CPU's
  6921. have an extensive range of _extremely_ fast instructions for manipulating
  6922. string data (well, for manipulating any data). Compiler's generally do not
  6923. produce code that takes advantage of these instructions (except for
  6924. inlining intrinsic functions like memcpy, strcmp etc and copying blocks of
  6925. data internally). If you can re-think your problem in terms of these more
  6926. powerful instructions, you can gain massive speed improvements (200-400%
  6927. plus). Now this is really worth the effort.
  6928.  
  6929. There are many other things that compiler just are _not_ good at doing,
  6930. and make perfect candidates for re-coding in assembly. Some of these are
  6931. multi-precision arithmetic, and shifts and rotates. High Level languages
  6932. like C just do not have the facilities for performing add's with carry,
  6933. rotates with carry's or even full precison integer multiplication (a 32
  6934. bit by 32 bit multiply produces a 64 bit product, which under C is a 32
  6935. bit product). If your code requires any of these things, recoding is
  6936. assembly can provide a significant speed improvement (CRC algorithms,
  6937. compression routines, you name it).
  6938.  
  6939. >In my (limited) experience it is ``easy'' to get a given code fragment to
  6940. >go 10-20% faster, but it's rarely worthwhile: if a routine is 10% faster
  6941. >and program spends 10% of its time there you've just sped up the program
  6942. >by 1%.  While there are certainly programs where this is worthwhile, they
  6943. >aren't the ones that I usually work on.
  6944.  
  6945. We all know the old 80-20 rule (or even 90-10 rule) that most programs
  6946. spend 80% of their time in 20% of the code. Optimising the 80% that hardly
  6947. ever gets executed is a waste of time, but optmising that other 20%
  6948. certainly is.
  6949.  
  6950. No-one in their right mind is going to write an entire program in assembly
  6951. these days, but by judicious use of assembly in the right areas,
  6952. significant speedups can be had.
  6953. --
  6954. Kendall Bennett                          | Internet:                     |
  6955. RMIT Advanced Computer Graphics Centre   | kjb@citri.edu.au              |
  6956. CITRI Building, 723 Swanston Street      | rcskb@minyos.xx.rmit.oz.au    |
  6957. Carlton Victoria 3053 AUSTRALIA.         |                               |
  6958. -- 
  6959. Send compilers articles to compilers@iecc.cambridge.ma.us or
  6960. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  6961.  
  6962.  
  6963. From compilers Fri Feb 19 13:09:55 EST 1993
  6964. Newsgroups: comp.compilers
  6965. Path: iecc!compilers-sender
  6966. From: munk@prl.philips.nl
  6967. Subject: Re: Looking for languages that compile to C
  6968. Message-ID: <93-02-104@comp.compilers>
  6969. Keywords: C, modula
  6970. Sender: compilers-sender@iecc.cambridge.ma.us
  6971. Organization: Compilers Central
  6972. References: <93-02-083@comp.compilers>
  6973. Date: Fri, 19 Feb 1993 09:04:55 GMT
  6974. Approved: compilers@iecc.cambridge.ma.us
  6975.  
  6976. I think the original question is a strange one. It's not the language that
  6977. compiles to C, it's the compiler.
  6978.  
  6979. We have developed a compiler generator toolset (Elegant) that used to
  6980. compile to Modula-2 but has been rewritten to compile to (K&R) C.  (ANSI-C
  6981. is our next target.)
  6982.  
  6983. Why C?. Because C is what its adversaries always claim: a high level
  6984. assembler. And that's how Elegant uses it: to produce compact, highly
  6985. efficient and almost unreadable code. But with one great advantage: you
  6986. can get execuatbles on almost any platform. The platform only has to
  6987. support C.
  6988.  
  6989. Elegant is a bootstrapped compiler generator: it's written in Elegant. At
  6990. the moment, we have versions for several flavours of Unix (SunOS 3 and 4,
  6991. Apollo Domain, Ultrix), VAX/VMS and MS-DOS. The only things that had to be
  6992. changed for each of these platforms are a handfull of library routines
  6993. written directly in C. After that, its just one comand and a weekend of
  6994. processing later we have a new version for each of those platforms (even
  6995. the MS-DOS version is generated automatically on a PC-NFS connected PC).
  6996.  
  6997. If you want more information on Elegant, you are referred to
  6998.  
  6999.     The Elegant Compiler Generator System
  7000.     Lex Augusteijn
  7001.     (page 238-54)
  7002.  
  7003.     in
  7004.  
  7005.     Attribute Grammars and Their Applications
  7006.     P.Deransart, M. Jourdan (Eds)
  7007.     Springer Lecture Notes in Computer Science 461
  7008.  
  7009. Reagrds,
  7010.     Harm
  7011. --
  7012. | Harm Munk                              | Building WL 1.5.17
  7013. | Philips Research Laboratories          | P.O. Box 80 000
  7014. | Knowledge Based Systems                | 5600 JA  Eindhoven
  7015. |                                        | The Netherlands
  7016. | tel. +31 40 74 46 59                   | email: munk@prl.philips.nl
  7017. -- 
  7018. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7019. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7020.  
  7021.  
  7022. From compilers Fri Feb 19 13:11:09 EST 1993
  7023. Newsgroups: comp.compilers
  7024. Path: iecc!compilers-sender
  7025. From: John_Burton@gec-epl.co.uk
  7026. Subject: object code vs. assembler code
  7027. Message-ID: <93-02-105@comp.compilers>
  7028. Keywords: assembler, question, comment
  7029. Sender: compilers-sender@iecc.cambridge.ma.us
  7030. Organization: Compilers Central
  7031. Date: Fri, 19 Feb 1993 09:25:29 GMT
  7032. Approved: compilers@iecc.cambridge.ma.us
  7033.  
  7034. Many unix based compilers seem to produce assembly language output which
  7035. is assembled by a separate program to produce object modules.
  7036.  
  7037. Obviously it is possible for a compiler to produce object code directly
  7038. which seems to be the standard on many other systems which seems much more
  7039. efficent to me.
  7040.  
  7041. Is there any good reason why many compilers produce assembly language as
  7042. this seems to be a big performance hit with no gain by doing this. I can't
  7043. see that producing obejct code is *that* much harder.
  7044.  
  7045. -- John Burton
  7046. [Mostly it's a matter of taste.  Some Unix assemblers, particularly the
  7047. earlier ones, were very fast, so there needn't be a performance issue. -John]
  7048. -- 
  7049. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7050. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7051.  
  7052.  
  7053. From compilers Fri Feb 19 13:13:16 EST 1993
  7054. Newsgroups: comp.compilers
  7055. Path: iecc!compilers-sender
  7056. From: Frieder Monninger    <fm@sigcomp.sub.org>
  7057. Subject: Eiffel for OS/2
  7058. Message-ID: <93-02-106@comp.compilers>
  7059. Keywords: Eiffel
  7060. Sender: compilers-sender@iecc.cambridge.ma.us
  7061. Organization: Compilers Central
  7062. References: <93-02-083@comp.compilers>
  7063. Date: Fri, 19 Feb 1993 10:38:44 GMT
  7064. Approved: compilers@iecc.cambridge.ma.us
  7065.  
  7066. >Is anyone thinking about porting Eiffel to OS/2 version 2 (32-bit)?
  7067.  
  7068. Eiffel/S runs under OS/2 2.0 using GCC 2.1 or Watcom 9.0 C as backend -
  7069. this means 32 bit.
  7070. --
  7071. Frieder Monninger    SIG Computer GmbH    fm@sigcomp.sub.org
  7072.             D 6333 Braunfels    ++49 6472/2096
  7073.  
  7074. -- 
  7075. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7076. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7077.  
  7078.  
  7079. From compilers Fri Feb 19 13:14:09 EST 1993
  7080. Xref: iecc comp.compilers:4277 comp.programming:3734 comp.software-eng:10445
  7081. Newsgroups: comp.compilers,comp.programming,comp.software-eng
  7082. Path: iecc!compilers-sender
  7083. From: pgf@hara.fct.unl.pt (Pedro Geraldes Freire)
  7084. Subject: Looking for pseudo-code interpreters
  7085. Message-ID: <93-02-107@comp.compilers>
  7086. Followup-To: pgf@fct.unl.pt
  7087. Keywords: interpreter, question
  7088. Sender: compilers-sender@iecc.cambridge.ma.us
  7089. Organization: Universidade Nova de Lisboa, PORTUGAL
  7090. Date: Fri, 19 Feb 1993 15:39:52 GMT
  7091. Approved: compilers@iecc.cambridge.ma.us
  7092.  
  7093.  
  7094.  Hello everybody!
  7095.  
  7096.  We are developing a project for an integrated information system that
  7097. uses EXPRESS as a definition language. We are thinking of using some sort
  7098. of interpreter to implement the rule/procedural part of the system.  The
  7099. interpreter would have to access the data maintained by the system so it
  7100. would probably need some sort of symbolic data manipulation
  7101. capabilities... Efficiency is important but not critical.
  7102.  
  7103.  PD C++ or C source would be ideal. Ideas are always welcome.
  7104.  
  7105.  Please e-mail your answers.
  7106.  
  7107.  Thanks for your help,
  7108.  
  7109.  
  7110.  Pedro.
  7111. --
  7112. Pedro Geraldes Freire             | BITNET/Internet: pgf@fct.unl.pt
  7113. Projecto CIMTOFI          |            UUCP: pgf@unl.uucp
  7114. UNINOVA - GRI - FCT/UNL           | Fax:   (+351) (1) 295 56 41/44 61
  7115. 2825 Monte Caparica, PORTUGAL     | Phone: (+351) (1) 295 44 64 ext.1560
  7116. -- 
  7117. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7118. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7119.  
  7120.  
  7121. From compilers Fri Feb 19 13:14:43 EST 1993
  7122. Newsgroups: comp.compilers
  7123. Path: iecc!compilers-sender
  7124. From: miltenbu@prl.philips.nl (Henk Miltenburg)
  7125. Subject: Flex problem on DEC Alpha
  7126. Message-ID: <93-02-108@comp.compilers>
  7127. Keywords: lex, question
  7128. Sender: compilers-sender@iecc.cambridge.ma.us
  7129. Organization: Philips Research Laboratories, Eindhoven, The Netherlands
  7130. Date: Fri, 19 Feb 1993 15:41:58 GMT
  7131. Approved: compilers@iecc.cambridge.ma.us
  7132.  
  7133. Hi,
  7134.  
  7135. I've got a problem with a flex generated scanner on the DEC Alpha. I'm
  7136. running OPEN VMS.  Everytime my program enters the scanner, it loops. I
  7137. know it is somewhere in yylex.  Has anyone the same experience, and does
  7138. know what to do about it?  Is there a new version of FLEX which solves
  7139. this problem?  The scanner is generated on a standard VMS machine and is
  7140. running fine in this environment.  I'm using FLEX 2.3.  Please reply with
  7141. e-mail to miltenbu@prl.philips.nl
  7142.  
  7143. Thanks
  7144.  
  7145. Henk Miltenburg
  7146. -- 
  7147. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7148. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7149.  
  7150.  
  7151. From compilers Fri Feb 19 13:15:20 EST 1993
  7152. Newsgroups: comp.compilers
  7153. Path: iecc!compilers-sender
  7154. From: preston@dawn.cs.rice.edu (Preston Briggs)
  7155. Subject: Re: C++ symbol table
  7156. Message-ID: <93-02-109@comp.compilers>
  7157. Keywords: C++, parse
  7158. Sender: compilers-sender@iecc.cambridge.ma.us
  7159. Organization: Rice University, Houston
  7160. References: <93-02-101@comp.compilers>
  7161. Date: Fri, 19 Feb 1993 17:38:05 GMT
  7162. Approved: compilers@iecc.cambridge.ma.us
  7163.  
  7164. jdass@cssc-melb.tansu.com.au (Joydip Dass) writes:
  7165.  
  7166. >I have got hold of Jim Roskind`s C++ grammar.  I have also modified his
  7167. >Flex input file to suit my purposes.  However, as he points out in his
  7168. >documentation, the lexer he supplied does not include a SYMBOL TABLE and
  7169. >does NOT KEEP TRACK OF CURRENT SCOPES.  I am in need of these
  7170. >facilities....
  7171.  
  7172. Thr Dragon Book is a good source for this stuff.
  7173.  
  7174.   title="Compilers: Principles, Techniques, and Tools",
  7175.   author="Alfred V. Aho and Ravi Sethi and Jeffrey D. Ullman",
  7176.   year=1986,
  7177.   publisher="Addison-Wesley"
  7178.  
  7179. Also, here's a relevant paper from one of the early compiler
  7180. construction conferences.
  7181.  
  7182.   title="Hashed Symbol Tables for Languages with Explicit Scope Control",
  7183.   author="Susan L. Graham and W. N. Joy and O. Roubine",
  7184.   pages="50--57",
  7185.   journal=sigplan,
  7186.   year=1979,
  7187.   month=aug,
  7188.   volume=14,
  7189.   number=8,
  7190.   note=pldi79
  7191.  
  7192.  
  7193. Preston Briggs
  7194. -- 
  7195. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7196. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7197.  
  7198.  
  7199. From compilers Fri Feb 19 13:29:40 EST 1993
  7200. Newsgroups: comp.compilers
  7201. Path: iecc!compilers-sender
  7202. From: kleinjf@nextwork.rose-hulman.edu (Joel F Klein)
  7203. Subject: SML-NJ used in winning ACM student poster project
  7204. Message-ID: <93-02-110@comp.compilers>
  7205. Keywords: ML
  7206. Sender: compilers-sender@iecc.cambridge.ma.us
  7207. Organization: Computer Science Department at Rose-Hulman
  7208. Date: Fri, 19 Feb 1993 04:41:23 GMT
  7209. Approved: compilers@iecc.cambridge.ma.us
  7210.  
  7211. Where: ACM Computer Science Conference 1993, Indianapolis
  7212. Event: student research poster competition
  7213. Date: Wed 17 Feb
  7214.  
  7215. The second-place winning entry (undergrad division) was the Prizm Toybox,
  7216. an integrated programming environment, designed for use in introductory
  7217. computer science courses.  The interpreter for this environment was coded
  7218. in SML-NJ, using SML-Lex and SML-Yacc for the lexer and parser.  The
  7219. interpreter is for the Prizm language, a Pascal-like language designed to
  7220. reduce the learning curve for the non-programmer students who take
  7221. Rose-Hulman's CS100, Introduction to Comp Sci.
  7222.  
  7223. The product will probably be distributed with source code, but it is still
  7224. under development. We just wanted to make this announcement for its news
  7225. value, and to toot the horns of Dave MacQueen and Andrew Appel, as well as
  7226. our own.  Our thanks to MacQueen and Appel for SML-NJ!
  7227.  
  7228. Todd R. Eigenschink and Joel F. Klein
  7229. Rose-Hulman Institute of Technology
  7230.  
  7231. -- 
  7232. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7233. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7234.  
  7235.  
  7236. From compilers Fri Feb 19 14:14:15 EST 1993
  7237. Newsgroups: comp.compilers
  7238. Path: iecc!compilers-sender
  7239. From: preston@dawn.cs.rice.edu (Preston Briggs)
  7240. Subject: Re: Superoptimizers (was Re: Effectiveness of compilers today)
  7241. Message-ID: <93-02-111@comp.compilers>
  7242. Keywords: optimize
  7243. Sender: compilers-sender@iecc.cambridge.ma.us
  7244. Organization: Rice University, Houston
  7245. References: <93-02-082@comp.compilers> <93-02-099@comp.compilers>
  7246. Date: Fri, 19 Feb 1993 17:55:17 GMT
  7247. Approved: compilers@iecc.cambridge.ma.us
  7248.  
  7249. drw@zermelo.mit.edu (Dale R. Worley) writes:
  7250.  
  7251. >I've wondered if it's possible to have a program grovel the ASTs of a
  7252. >bunch of programs and extract out "common" combinations of operations that
  7253. >should be candidates for superoptimizer investigation.
  7254.  
  7255. One approach (which I associate with Davidson and Fraser) is to have the
  7256. compiler log exceptions (i.e., opportunities!) when it comes across them.
  7257.  
  7258. Consider my multiply example.  We've got some general method that does
  7259. pretty well and an exception table that we use to record cases where the
  7260. general method is known to be less than optimal (presumably we've
  7261. investigated all the integers up to some k, say 1000).  Anytime a number n
  7262. comes along that is bigger than k, we check the exception table.  If
  7263. present, we emit the translation.  If not present, we use our general
  7264. method and log the fact that some interesting new number has come along.
  7265. Run all your favorite code through the compiler (say, all the SPECmark
  7266. programs), then sic the exponential search on any numbers that show up in
  7267. the log.  If you find an improvement, add it to the exception table.
  7268.  
  7269. I'd don't really like the multiply example (kind of small potatoes), but
  7270. other more interesting examples are possible.  Davidson and Fraser used a
  7271. similar approach several years ago to build a peephole optimizer.
  7272.  
  7273.   title="Automatic Generation of Peephole Optimizations",
  7274.   author="Jack W. Davidson and Christopher W. Fraser",
  7275.   journal=sigplan,
  7276.   year=1984,
  7277.   month=jun,
  7278.   volume=19,
  7279.   number=6,
  7280.   note=pldi84,
  7281.   pages="111--116"
  7282.  
  7283. They use a slow but complete peephole optimizer at compile-generation time
  7284. to find patterns in a training set of programs.  The patterns are then
  7285. used to build a fast peephole optimizer for production use.
  7286.  
  7287. Preston Briggs
  7288. -- 
  7289. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7290. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7291.  
  7292.  
  7293. From compilers Fri Feb 19 14:15:46 EST 1993
  7294. Newsgroups: comp.compilers
  7295. Path: iecc!compilers-sender
  7296. From: albaugh@agames.com (Mike Albaugh)
  7297. Subject: Effectiveness of compilers
  7298. Message-ID: <93-02-112@comp.compilers>
  7299. Keywords: performance, assembler
  7300. Sender: compilers-sender@iecc.cambridge.ma.us
  7301. Organization: Compilers Central
  7302. References: <93-02-082@comp.compilers>
  7303. Date: Fri, 19 Feb 1993 18:03:51 GMT
  7304. Approved: compilers@iecc.cambridge.ma.us
  7305.  
  7306. ANDREAS ARFF (andreasa@dhhalden.no) wrote:
  7307. : Could someone tell me more about this. Are there any tests between common
  7308. : compilers and assembler programmers. Who is the best?
  7309.  
  7310.     In my experience with "simple" chips (68K, pdp11) there are three
  7311. important cases:
  7312.  
  7313.     Human "tweaks" assembly code output from compiler. This tends to
  7314. improve (or worsen) by the oft-quoted 10%.
  7315.  
  7316.     Human attempts to hand-compile significant piece of code directly
  7317. from HLL. This sometimes gets a gain of 2x, but can also be a disaster, as
  7318. human error takes its toll. On simpler chips, sufficient rigor can usually
  7319. make it work, but I wouldn't even attempt it on something like the i860.
  7320.  
  7321.     Human re-thinks algorithm in terms not constrained by the HLL.
  7322. This is where impressive gains can be made. My personal best data point is
  7323. an eight-fold improvement in a data-decompression routine. This was
  7324. measured against the "tweaked" output of a C compiler, and
  7325. accepted/produced the same data format dictated by the C version, so
  7326. correctness was relatively easy to determine. Implementing the same
  7327. algorithm in C was slower than the original, as it involved bit-pointers,
  7328. rotates, and co-routining. This is not to say that I was using any
  7329. particular feature of the specific chip (68k), but rather the sort of
  7330. operations that are common to a lot of chips, but difficult to express in
  7331. C. No, Herman, you don't need to add to this :-)
  7332.  
  7333.     The major problem with the perennial flame war is that it seems to
  7334. end up being cast as a battle between a _particular_ HLL (usually C, on
  7335. UseNet) and the grubbiest sort of "speed at any price" bit-twiddling. I
  7336. almost never code in octal, but rely on an "industrial strength" macro-
  7337. assembler and, when needed, write special-purpose programs to generate the
  7338. "assembly" code. Yes, sometimes I write directly in assembly, but only the
  7339. expectation that the code I write will go into a _lot_ of ROMS, or dire
  7340. need (Trap handlers come to mind) is sufficient to get me to do much of
  7341. that sort of thing...
  7342.  
  7343.     Of course, _sometimes_ I write in assembly for _fun_ :-)
  7344.  
  7345.                     Mike
  7346.  
  7347. | Mike Albaugh (albaugh@agames.com || netcom.com!agames.com!albaugh)
  7348. | Atari Games Corp (Arcade Games, no relation to the makers of the ST)
  7349. | 675 Sycamore Dr. Milpitas, CA 95035        voice: (408)434-1709
  7350. -- 
  7351. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7352. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7353.  
  7354.  
  7355. From compilers Fri Feb 19 23:45:33 EST 1993
  7356. Xref: iecc comp.compilers:4283 comp.parallel:5226
  7357. Newsgroups: comp.compilers,comp.parallel
  7358. Path: iecc!compilers-sender
  7359. From: Soohong Kim <soohongk@scf.usc.edu>
  7360. Subject: Vectorizing/Paralllelizing C Compilers today?
  7361. Message-ID: <93-02-113@comp.compilers>
  7362. Keywords: C, parallel, question
  7363. Sender: compilers-sender@iecc.cambridge.ma.us
  7364. Organization: Compilers Central
  7365. Date: Fri, 19 Feb 1993 19:53:19 GMT
  7366. Approved: compilers@iecc.cambridge.ma.us
  7367.  
  7368. Hello,
  7369.  
  7370.     I am interested in " Vectorizing/Parallelizing C compilers" and
  7371. would like to know the current research status.
  7372.  
  7373.     Most of the parallel compiler research is for FORTRAN.
  7374.  
  7375.     Please let me know of commercial products and research projects
  7376. for Vectorizing/Parallelizing C compilers.
  7377.  
  7378. Thanks in advance.
  7379.  
  7380. Soohong Peter Kim
  7381. soohongk@scf.usc.edu
  7382. -- 
  7383. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7384. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7385.  
  7386.  
  7387. From compilers Fri Feb 19 23:46:47 EST 1993
  7388. Newsgroups: comp.compilers
  7389. Path: iecc!compilers-sender
  7390. From: chased@rbbb.Eng.Sun.COM (David Chase)
  7391. Subject: Re: C++ symbol table
  7392. Message-ID: <93-02-114@comp.compilers>
  7393. Keywords: C++, parse
  7394. Sender: compilers-sender@iecc.cambridge.ma.us
  7395. Organization: Sun
  7396. References: <93-02-101@comp.compilers>
  7397. Date: Fri, 19 Feb 1993 20:12:18 GMT
  7398. Approved: compilers@iecc.cambridge.ma.us
  7399.  
  7400. jdass@cssc-melb.tansu.com.au (Joydip Dass) writes:
  7401. > [desperately seeking symbol table.]
  7402.  
  7403. I don't have a complete answer, but I do have a suggestion.  There was a
  7404. nifty trick proposed by Paul Dietz in STOC '81, and it has been used with
  7405. some success by several people that I know (in fact, it has been
  7406. rediscovered with some success by several people, and we (= me, Wegman,
  7407. Zadeck) used it in a different context to get good time bounds for a sort
  7408. of incremental SSA.  The "trick" is that instead of posing the problem as
  7409.  
  7410.   given location (scope) what symbol table do I use?
  7411.   given symbol table, what is the information for symbol "foo"?
  7412.  
  7413. you invert it, as in
  7414.  
  7415.   given a symbol "foo", what "scope table" do I use?
  7416.   given a scope table and a location, what information do I have?
  7417.  
  7418. The next part of the trick is to encode the "scopes" appropriately.  Dietz
  7419. proposed to do this (I'm working from memory, so the errors are probably
  7420. mine) by recording the entry and exit numbers for each node in a
  7421. depth-first walk of the block-structure of the program (watch out for
  7422. Duff's device in C).  Each new declaration of a variable V is assoicated
  7423. with a block, and to record that declaration you enter the entry and exit
  7424. numbers in V's scope table.  The exact structure of the scope table is
  7425. left as an exercise, but for small numbers of declarations (usual case),
  7426. something based on linear search will probably serve well.
  7427.  
  7428. So, your lookup algorithm becomes something like:
  7429.  
  7430.   use hash table to get a scope table, given an identifier.
  7431.   use scope table to get information, given a location.
  7432.  
  7433. This has been used in an attribute grammar system (Rodney Farrow of
  7434. Declarative Systems) because the symbol tables produced in this way can be
  7435. made to appear "applicative", yet are efficient in terms of both time and
  7436. space.  It also helps in the situation where there may not be a
  7437. declaration, because you have handy access to any declarations that there
  7438. might be.
  7439.  
  7440. For C++, note that your notion of "scopes" may be very fine-grained, and
  7441. probably does not correspond one-to-one with curly braces.  You'll also
  7442. need something to cope with the scopes associated with different types.
  7443.  
  7444. I hope this helps.
  7445.  
  7446. David Chase
  7447. Sun
  7448. -- 
  7449. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7450. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7451.  
  7452.  
  7453. From compilers Fri Feb 19 23:47:51 EST 1993
  7454. Newsgroups: comp.compilers
  7455. Path: iecc!compilers-sender
  7456. From: byron@netapp.com (Byron Rakitzis)
  7457. Subject: Re: object code vs. assembler code
  7458. Message-ID: <93-02-115@comp.compilers>
  7459. Keywords: assembler, performance
  7460. Sender: compilers-sender@iecc.cambridge.ma.us
  7461. Organization: Network Appliance Corporation
  7462. References: <93-02-105@comp.compilers>
  7463. Date: Sat, 20 Feb 1993 01:18:33 GMT
  7464. Approved: compilers@iecc.cambridge.ma.us
  7465.  
  7466. John_Burton@gec-epl.co.uk writes:
  7467. >Obviously it is possible for a compiler to produce object code directly
  7468. >which seems to be the standard on many other systems which seems much more
  7469. >efficent to me.
  7470.  
  7471. >[Mostly it's a matter of taste.  Some Unix assemblers, particularly the
  7472. >earlier ones, were very fast, so there needn't be a performance issue. -John]
  7473.  
  7474. Here are some real numbers to play with:
  7475.  
  7476. I ran the various stages of gcc-1.40 on 39 source files (about 7000 lines
  7477. of code) and timed each stage. These tests were run on a diskless Sun ELC
  7478. w/24M running 4.1.1.
  7479.  
  7480.     Program    User+Sys   Total
  7481.  
  7482.     cccp    2.4+6.8  == 9.2
  7483.  
  7484.     cc1    25.4+6.5 == 31.9
  7485.  
  7486.     /bin/as    5.0+6.3  == 11.3
  7487.  
  7488. So, assembly takes up about 20% of the total time. That's not
  7489. insignificant.
  7490.  
  7491. If you run a compiler with a faster code generator (such as lcc), then the
  7492. middle stage should be smaller by about a factor of 2 or 3, so assembly
  7493. can be as much as a quarter or a third of the total execution time.
  7494.  
  7495. (So why emit assembler? One of my long-term projects is to write a code
  7496. generator for lcc to use SPARC without register windows. I will initially
  7497. generate assembler, because it's the quickest way to get code working
  7498. (mainly because it's easy to debug). Eventually I would like to think
  7499. about generating object code directly, particularly if I try to
  7500. investigate some ideas related to linking (incremental linking, global
  7501. pointer..) where a new object format might be called for.  I am
  7502. structuring the code so that switching from one to the other will require
  7503. a trivial amount of work.)
  7504.  
  7505. Byron Rakitzis.
  7506. -- 
  7507. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7508. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7509.  
  7510.  
  7511. From compilers Sun Feb 21 18:23:11 EST 1993
  7512. Newsgroups: comp.compilers
  7513. Path: iecc!compilers-sender
  7514. From: kanze@us-es.sel.de (James Kanze)
  7515. Subject: Re: Effectiveness of compilers today
  7516. Message-ID: <93-02-116@comp.compilers>
  7517. Keywords: optimize
  7518. Sender: compilers-sender@iecc.cambridge.ma.us
  7519. Organization: Compilers Central
  7520. References: <93-02-082@comp.compilers> <93-02-091@comp.compilers>
  7521. Date: Sat, 20 Feb 1993 14:04:00 GMT
  7522. Approved: compilers@iecc.cambridge.ma.us
  7523.  
  7524. Joe Buck (jbuck@forney.berkeley.edu) writes:
  7525.  
  7526. |> [ about the Gnu superoptimizer]
  7527.  
  7528. The following code sequence was presented in the original article.
  7529.  
  7530. |>   Faster 80x86 code than the standard cmpl/seta/and for
  7531. |>   ecx = ((unsigned) eax > (unsigned) edx):
  7532. |>           cmpl    %eax,%edx
  7533. |>           sbbl    %ecx,%ecx
  7534. |>           negl    %ecx
  7535.  
  7536. An interesting point.  This code sequence is a well known trick regularly
  7537. used by 8086 assembly programmers 10 years back.  So it should hardly
  7538. require a super-optimizer to find it.  In fact, PL/M86 regularly generated
  7539. such sequences, way back in 1979!  (Actually, since PL/M defined FALSE as
  7540. 0xff, it didn't need the final neg.)  If my memory serves me right, this
  7541. was just a carry over from PL/M80 (earlier than 1976?).
  7542.  
  7543. So modern compilers require a "superoptimizer" just to obtain what was
  7544. very run-of-mill code 10 years ago?  I wonder if this has something to do
  7545. with the fact that modern compilers are written by software shops (FSF,
  7546. AT&T, etc.), whereas the original PL/M was written by the chip
  7547. manufacturer.  So 10 years ago, the compiler writers knew the target
  7548. machine intemately, whereas now, they try and find a general solution for
  7549. all machine architectures.  Nevertheless, the above optimization is a win
  7550. on most conventional architectures, so there is no excuse for GNU (and
  7551. even less for Microsoft and Borland, who make strictly Intel compilers) to
  7552. not use it.
  7553.  
  7554. I suspect that where the assembler programmer gets the most wins is not
  7555. the really small sequences, but in the medium length stuff.  And I also
  7556. suspect that assembly programming pays off more in unorthogonal
  7557. architectures (like the 80x86) than in orthogonal ones (like the NSC
  7558. 32000).
  7559. --
  7560. James Kanze                             email: kanze@us-es.sel.de
  7561. GABI Software, Sarl., 8 rue du Faisan, F-67000 Strasbourg, France
  7562. -- 
  7563. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7564. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7565.  
  7566.  
  7567. From compilers Sun Feb 21 18:24:25 EST 1993
  7568. Newsgroups: comp.compilers
  7569. Path: iecc!compilers-sender
  7570. From: Paul Robinson <tdarcos@access.digex.com>
  7571. Subject: Program Analysis (Was: Superoptimizers)
  7572. Message-ID: <93-02-117@comp.compilers>
  7573. Keywords: optimize
  7574. Sender: compilers-sender@iecc.cambridge.ma.us
  7575. Organization: Compilers Central
  7576. References: <93-02-082@comp.compilers> <93-02-111@comp.compilers>
  7577. Date: Sat, 20 Feb 1993 21:07:37 GMT
  7578. Approved: compilers@iecc.cambridge.ma.us
  7579.  
  7580. > I've wondered if it's possible to have a program grovel the ASTs of a
  7581. > bunch of programs and extract out "common" combinations of operations that
  7582. > should be candidates for superoptimizer investigation.
  7583.  
  7584. I'm not sure what you mean by "grovel the ASTs" but let's say that you
  7585. mean to analyze common program executions or sources to see what they are
  7586. doing.  The only problem in doing this is to get people to let you see
  7587. their code.
  7588.  
  7589. Read "The Psychology of Computer Programming" for an issue about this for
  7590. the exact same reason: some people wanted to analyze the errors people
  7591. were getting in their programs to see if better error messages or analysis
  7592. could be done to improve the way the system works.  For most people, it
  7593. was the equivalent of pulling teeth without anesthesia to get them to give
  7594. up their programs because people don't want to admit they've made
  7595. mistakes; programs are extremely personal, because of the fact they do
  7596. things, I believe that the attachment people can have with software
  7597. borders on the attachments between people and their offspring.
  7598.  
  7599. You might try going through the source code libraries of stuff on
  7600. Internet, but then again, that may be atypical since any sources there are
  7601. ones that have been "cleaned up" for the public to see.  If you want to
  7602. look at the grungy, dirty code that people write real applications in, you
  7603. are going to have to be about as circumspect as a man trying to propose
  7604. adultery to someone's otherwise faithful wife!  People's programs are
  7605. extremely personal to them.
  7606.  
  7607. I once wanted to find out about developing an MTA (Message Transfer Agent)
  7608. for a certain class of message processing.  The operator of one message
  7609. service had written the program to do this on his own.  I had already
  7610. written the User Agent to handle messages locally; so I asked him about
  7611. making the program available so I could implement it elsewhere and make a
  7612. split of profits from the sale.  Even though I had no intention of selling
  7613. source, and he wasn't even using the program any more, he was afraid to
  7614. let anyone else see it because it was so hastily written and very ugly in
  7615. his opinion; he didn't want anyone to know how bad it looks like.  Ugly
  7616. code always gets the Cinderella treatment.
  7617. -- 
  7618. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7619. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7620.  
  7621.  
  7622. From compilers Sun Feb 21 18:26:09 EST 1993
  7623. Newsgroups: comp.compilers
  7624. Path: iecc!compilers-sender
  7625. From: henry@zoo.toronto.edu (Henry Spencer)
  7626. Subject: Re: object code vs. assembler code
  7627. Message-ID: <93-02-118@comp.compilers>
  7628. Keywords: assembler
  7629. Sender: compilers-sender@iecc.cambridge.ma.us
  7630. Organization: U of Toronto Zoology
  7631. References: <93-02-105@comp.compilers>
  7632. Date: Sun, 21 Feb 1993 00:35:18 GMT
  7633. Approved: compilers@iecc.cambridge.ma.us
  7634.  
  7635. John_Burton@gec-epl.co.uk writes:
  7636. >Is there any good reason why many compilers produce assembly language as
  7637. >this seems to be a big performance hit with no gain by doing this. I can't
  7638. >see that producing obejct code is *that* much harder.
  7639.  
  7640. Depends on what machine you're on.  Back when the 68000 was new, a friend
  7641. of mine -- in the thick of 68k compiler work at the time -- said that his
  7642. experience was that it was harder to write the assembler than the compiler
  7643. code generator.  (The 68000 instruction encoding is a bit ugly.)
  7644.  
  7645. The advantages of producing assembler output are basically:
  7646.  
  7647. 1. It's less work for the compiler writer.  Emitting instructions is
  7648.     typically no big deal -- writing `emitw(010213)' is not much
  7649.     harder than writing `emit("mov r2, *r3")' -- but getting the
  7650.     symbol tables right can be complicated.
  7651.  
  7652. 2. ASCII output makes debugging simpler.  You need *some* way to read
  7653.     the final output...
  7654.  
  7655. 3. All the knowledge of how to generate actual object modules can be
  7656.     centralized in one place.  This is a non-trivial issue if the
  7657.     format is complex or if it ever has to change, and it means
  7658.     that bug fixes can be applied in one and only one place.
  7659.  
  7660. 4. The assembler may perform non-trivial optimizations, e.g. filling
  7661.     delay slots, that strengthen point #3.  Not uncommon nowadays.
  7662.  
  7663. The main disadvantage is that an incompetently-implemented assembler can
  7664. make the overall process seriously slower.  And even with a good
  7665. implementation, you necessarily take some efficiency hit in having the
  7666. assembler rediscover things like symbol-table contents that the compiler
  7667. already knows.
  7668.  
  7669. An interesting angle on this issue is what Plan Nine did (take a look at
  7670. research.att.com/dist/plan9doc/8.Z [it's PostScript] for details).  The
  7671. compiler's output is essentially what you'd get out of the first pass of
  7672. an assembler -- a binary form of assembler.  (There is an assembler, a
  7673. small program that turns a suitable text form into the binary form.)  The
  7674. loader incorporates most of what's normally in the second pass of an
  7675. assembler, plus the usual linker functions, plus assorted optimizations.
  7676.  
  7677. The paper does mention one unhappiness with this setup: compiling of
  7678. multiple source files is trivially parallelizable, but the final loading
  7679. step isn't, so there is interest in moving some of the loader's work back
  7680. into the compiler.  This would presumably result in something closer to
  7681. the traditional model.
  7682.  
  7683. (One note of caution: as was recently discussed here, the paper's
  7684. code-efficiency comparison to GCC is suspect because it probably used an
  7685. old and poorly-tuned GCC.)
  7686. --
  7687. Henry Spencer @ U of Toronto Zoology |  henry@zoo.toronto.edu  utzoo!henry
  7688. -- 
  7689. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7690. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7691.  
  7692.  
  7693. From compilers Sun Feb 21 18:29:32 EST 1993
  7694. Newsgroups: comp.compilers
  7695. Path: iecc!compilers-sender
  7696. From: pardo@cs.washington.edu (David Keppel)
  7697. Subject: Re: Superoptimizers (was Re: Effectiveness of compilers today)
  7698. Message-ID: <93-02-119@comp.compilers>
  7699. Keywords: optimize, bibliography
  7700. Sender: compilers-sender@iecc.cambridge.ma.us
  7701. Organization: Computer Science & Engineering, U. of Washington, Seattle
  7702. References: <93-02-082@comp.compilers> <93-02-111@comp.compilers>
  7703. Date: Sun, 21 Feb 1993 02:02:27 GMT
  7704. Approved: compilers@iecc.cambridge.ma.us
  7705.  
  7706. >drw@zermelo.mit.edu (Dale R. Worley) writes:
  7707. >>[Can a program grovel the ASTs of a set of programs and extract
  7708. >> "common" combinations of operations that should be candidates for
  7709. >> superoptimizer investigation?]
  7710.  
  7711. preston@dawn.cs.rice.edu (Preston Briggs):
  7712. >[Davidson and Fraser 84 automatic generation of peephole optimizers.]
  7713.  
  7714. See also:
  7715.  
  7716. %A Robert R. Henry
  7717. %T Code Generation by Table Lookup
  7718. %R 87-07-07
  7719. %I University of Washington Computer Science
  7720. %D 1987
  7721. %X The code generator is ``trained'' by feeding it sample input DAGs.
  7722. Special patterns are generated for DAGs that occur frequently.  Thus,
  7723. the machine description is augmented with (virtual) instructions that
  7724. correspond to frequently-occuring DAGs.
  7725.  
  7726.         ;-D on  ( Dr. Seuss-peroptmizers )  Pardo
  7727. -- 
  7728. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7729. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7730.  
  7731.  
  7732. From compilers Sun Feb 21 18:30:25 EST 1993
  7733. Newsgroups: comp.compilers
  7734. Path: iecc!compilers-sender
  7735. From: tony@cs.colorado.edu (Tony Sloane)
  7736. Subject: Re: C++ symbol table
  7737. Message-ID: <93-02-120@comp.compilers>
  7738. Keywords: tools, bibliography
  7739. Sender: compilers-sender@iecc.cambridge.ma.us
  7740. Reply-To: tony@cs.colorado.edu
  7741. Organization: University of Colorado at Boulder
  7742. References: <93-02-101@comp.compilers> <93-02-114@comp.compilers>
  7743. Date: Sun, 21 Feb 1993 04:14:40 GMT
  7744. Approved: compilers@iecc.cambridge.ma.us
  7745.  
  7746. The Eli system (see recent announcement in comp.compilers or send me mail
  7747. for information) provides a flexible module for handling general scoping
  7748. issues.  Eli does much more than this (try it :-) but you can use the
  7749. module independently (it's written in C).  For a description, see the
  7750. following paper:
  7751.  
  7752. %A U. Kastens
  7753. %A W. M. Waite
  7754. %J Acta Informatica
  7755. %P 539--558
  7756. %T An abstract data type for name analysis
  7757. %V 28
  7758. %D 1991
  7759.  
  7760. Tony
  7761. --
  7762. Tony Sloane                     tony@cs.colorado.edu
  7763. Department of Computer Science, University of Colorado at Boulder
  7764. -- 
  7765. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7766. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7767.  
  7768.  
  7769. From compilers Sun Feb 21 18:32:29 EST 1993
  7770. Newsgroups: comp.compilers
  7771. Path: iecc!compilers-sender
  7772. From: tchannon@black.demon.co.uk (Tim Channon)
  7773. Subject: Re: Effectiveness of compilers today
  7774. Message-ID: <93-02-121@comp.compilers>
  7775. Keywords: performance, assembler
  7776. Sender: compilers-sender@iecc.cambridge.ma.us
  7777. Reply-To: tchannon@black.demon.co.uk
  7778. Organization: Compilers Central
  7779. References: <93-02-082@comp.compilers>
  7780. Date: Fri, 19 Feb 1993 00:31:49 GMT
  7781. Approved: compilers@iecc.cambridge.ma.us
  7782.  
  7783. > Could someone tell me more about this. Are there any tests between common
  7784. > compilers and assembler programmers. Who is the best?
  7785.  
  7786. Most of the posts in response to this question seem to look at it
  7787. (surprise) from the viewpoint of handcoding the same problem as that
  7788. presented to a compiler but IMO this is not at all representative because
  7789. assembler programmers in my experiance even think differently! Or as we
  7790. shall see do they?
  7791.  
  7792. I was recently party to a long discussion to do with this where it was
  7793. being discussed by predominately assembly programmers. A number of points
  7794. arose with perhaps one of the more common ones being stack usage where
  7795. compilers tend to but humans don't. Variable allocation tends to be
  7796. completely differently done and so on.
  7797.  
  7798. Looking at compiler produced code and having trouble improving it doesn't
  7799. surprise me because a human probably decided that was good code to produce
  7800. given the HL source.
  7801.  
  7802. Could an assembler programmer improve on an FFT library routine? I doubt
  7803. it.  You see most of this compiler generated code is actually assembler
  7804. written on behalf of the compiler author(s). :-)
  7805.  
  7806. I expect there are some of the best assembly programmers of the lot here
  7807. in this group and they pass this knowledge on in the form of compilers.
  7808.  
  7809. All IMO.
  7810.  
  7811.   TC.
  7812.     E-mail: tchannon@black.demon.co.uk or tchannon@cix.compulink.co.uk
  7813. -- 
  7814. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7815. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7816.  
  7817.  
  7818. From compilers Mon Feb 22 18:05:01 EST 1993
  7819. Newsgroups: comp.compilers
  7820. Path: iecc!compilers-sender
  7821. From: clyde@hitech.com.au (Clyde Smith-Stubbs)
  7822. Subject: Re: object code vs. assembler code (Detailed response)
  7823. Message-ID: <93-02-122@comp.compilers>
  7824. Keywords: assembler, performance
  7825. Sender: compilers-sender@iecc.cambridge.ma.us
  7826. Organization: HI-TECH Software, Brisbane, QLD, Australia.
  7827. References: <93-02-105@comp.compilers> <93-02-115@comp.compilers>
  7828. Date: Mon, 22 Feb 1993 00:32:24 GMT
  7829. Approved: compilers@iecc.cambridge.ma.us
  7830.  
  7831.  
  7832. John_Burton@gec-epl.co.uk writes:
  7833. >Obviously it is possible for a compiler to produce object code directly
  7834. >which seems to be the standard on many other systems which seems much more
  7835. >efficent to me.
  7836. >[Mostly it's a matter of taste.  Some Unix assemblers, particularly the
  7837. >earlier ones, were very fast, so there needn't be a performance issue. -John]
  7838.  
  7839. byron@netapp.com (Byron Rakitzis) writes:
  7840. >... assembly takes up about 20% of the total time. That's not insignificant.
  7841.  
  7842. Well, here's a perspective from a compiler writer: the 20% mentioned that
  7843. assembly time takes up agrees with my experience, and speeding up the
  7844. assembler is a useful exercise if you want to speed up the compiler. But
  7845. compile time is these days much less of an issue than it used to be (I
  7846. speak here with experience ranging from CP/M on a Z80, through PDP11's,
  7847. Vaxes etc. right up to current Sparc, 80486 systems etc.). Compile time on
  7848. CP/M is a major issue, on a Sparc or 486 it becomes much less so. The
  7849. trend is clear: processors are getting faster at a rate outstripping the
  7850. tendency of compilers to do more work.
  7851.  
  7852. The issues affecting assembler vs. object code as I've seen them over the
  7853. years are these:
  7854.  
  7855. Firstly, my customers overwhelmingly tell me they like being able to read
  7856. the compiler output. In fact a significant effort goes into making the
  7857. output readable (formatting, source code as comments, notes about register
  7858. allocation etc.).  I can recall very few occasions (none in recent years)
  7859. where a user would have happily traded this for slightly faster
  7860. compilation. This alone is a good enough reason to generate assembler code
  7861. (at least optionally).
  7862.  
  7863. Secondly, the assembly stage is inherently multi-pass. I know there exist
  7864. single pass assemblers, but they effectively defer work to the linker. I
  7865. believe most compilers that output object code do so the same way, i.e.
  7866. they produce lots of forward references and backward fixups (or some
  7867. equivalent thereto). This prevents the optimization of calls, branches
  7868. etc. and other things a multi-pass assembler can do.
  7869.  
  7870. Thirdly, and most important from my point of view, a compiler that
  7871. produces object code directly is actually producing machine language as
  7872. opposed to assembler language. Most assembler languages are a
  7873. meta-language to some degree or other. In particular, many processors
  7874. (especially CISC) have instructions that look similar at the assembler
  7875. level, but have totally different binary encodings. An assembler is
  7876. designed to handle this, but it's extra work to do so in a compiler. For
  7877. example, in the 8086 instruction set, the instructions
  7878.  
  7879.     inc    si
  7880. and
  7881.     inc    -4[bp],word
  7882.  
  7883. have totally different encodings. A compiler generating object code has to
  7884. handle this somehow, either by treating these two case as separate, e.g.
  7885. something like
  7886.  
  7887.     i += 1;
  7888.  
  7889. might be matched by templates
  7890.  
  7891.     ASPLUS register_variable constant_one -> emit(0x40 + reg(left));
  7892. or
  7893.     ASPLUS memory_location constant_one   -> emit(0xFF); emitmemop(left);
  7894.  
  7895. rather than the generic
  7896.  
  7897.     ASPLUS lvalue constant_one          -> emit("inc"); emitop(left);
  7898.  
  7899. OR the compiler has to examine the expression after matching and decide,
  7900. based on the operands as well, what instruction to generate. In this case
  7901. it is doing the same job as an assembler. The same applies to the 68K
  7902. where you need to worry about things move vs. moveq vs. movea. On a RISC
  7903. chip where all instructions fall into two or three formats it's less of an
  7904. issue.
  7905.  
  7906. None of what I've said makes it impossible to generate object code. It
  7907. does indicate (at least to me) that it is more difficult, especially if
  7908. you're dealing with a portable compiler (I've written compilers for about
  7909. 12 different processor families).  The benefits are small - slightly
  7910. better compile time. Using assembler output seems to me to allow the
  7911. compiler writer to concentrate more on good code generation, and less on
  7912. idiosyncracies of the instruction set encoding.
  7913.  
  7914. I suspect also that some compiler writers tend towards emitting object
  7915. code simply because that's what they're used to doing, or that's what they
  7916. got taught. Certainly the compiler projects I did at uni. were oriented
  7917. towards object code production, but all the real compilers I've dealt with
  7918. produce assembler code.
  7919. --
  7920.  Clyde Smith-Stubbs       | HI-TECH Software,       | Voice: +61 7 300 5011
  7921.  clyde@hitech.com.au      | P.O. Box 103, Alderley, | Fax:   +61 7 300 5246
  7922.  ...!nwnexus!hitech!clyde | QLD, 4051, AUSTRALIA.   | BBS:   +61 7 300 5235
  7923. -- 
  7924. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7925. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7926.  
  7927.  
  7928. From compilers Mon Feb 22 18:06:24 EST 1993
  7929. Newsgroups: comp.compilers
  7930. Path: iecc!compilers-sender
  7931. From: korz@cs.columbia.edu (Frederick Korz)
  7932. Subject: Re: Effectiveness of compilers today
  7933. Message-ID: <93-02-123@comp.compilers>
  7934. Keywords: performance, bibliography
  7935. Sender: compilers-sender@iecc.cambridge.ma.us
  7936. Organization: Columbia University Department of Computer Science
  7937. References: <93-02-082@comp.compilers> <93-02-087@comp.compilers>
  7938. Date: Mon, 22 Feb 1993 17:13:16 GMT
  7939. Approved: compilers@iecc.cambridge.ma.us
  7940.  
  7941. pardo@cs.washington.edu (David Keppel) writes:
  7942. >I've forgotten where Henry Massalin's original Superoptimizer paper
  7943. >appeared, but it *may* be available as an online TR from
  7944. >`cs.columbia.edu'.
  7945.  
  7946.   H. Massalin, "Superoptimizer: A Look at the Smallest Program,"
  7947.   Proceedings ASPLOS II, October 1987, Palo Alto, CA., (a joint ACM,
  7948.   IEEE work, published by IEEE Computer Society Press, IEEE
  7949.   #87CH2440-6, ACM Order # 556870)
  7950.  
  7951.  
  7952. Fred Korz            450 Computer Science Building
  7953. korz@cs.columbia.edu        Columbia University
  7954. (212) 939-7068            NY, NY  10027 (USA)
  7955. -- 
  7956. Send compilers articles to compilers@iecc.cambridge.ma.us or
  7957. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  7958.  
  7959.  
  7960. From compilers Mon Feb 22 18:11:43 EST 1993
  7961. Newsgroups: comp.compilers
  7962. Path: iecc!compilers-sender
  7963. From: gorton@blorf.amt.tay.dec.com (Richard Gorton)
  7964. Subject: Re: Object vs. Assembly from a compiler
  7965. Message-ID: <93-02-124@comp.compilers>
  7966. Keywords: assembler, performance, comment
  7967. Sender: compilers-sender@iecc.cambridge.ma.us
  7968. Organization: Compilers Central
  7969. References: <93-02-105@comp.compilers> <93-02-115@comp.compilers>
  7970. Date: Mon, 22 Feb 1993 18:30:02 GMT
  7971. Approved: compilers@iecc.cambridge.ma.us
  7972.  
  7973. > John_Burton@gec-epl.co.uk writes:
  7974. > Is there any good reason why many compilers produce assembly language as
  7975. > this seems to be a big performance hit with no gain by doing this. I can't
  7976. > see that producing obejct code is *that* much harder.
  7977. >
  7978. As the moderator notes:
  7979. [Mostly it's a matter of taste.  Some Unix assemblers, particularly the
  7980. earlier ones, were very fast, so there needn't be a performance issue. -John]
  7981.  
  7982. Another point to consider is how much one trusts the native assembler.
  7983. Generating assembly code is just fine if the native assembler is stable,
  7984. and correct.  But if the assembler is changing and/or buggy, then
  7985. generating object code may turn out to save you lots and lots of
  7986. bug-hunting headaches.  Particularly if you don't have control of or
  7987. access to the assembler sources.
  7988.  
  7989. For example, some assemblers may not permit expressions involving
  7990. relocation, such as:
  7991.  
  7992.     sethi    %hi(_foo)+0x1000, %g2
  7993.     ld    [%g2 + %lo(_foo)+1000], %i2
  7994.  
  7995. but will take:
  7996.     sethi    %hi(_foo), %g2
  7997.     or    %g2, %lo(_foo), %g2
  7998.     ld    [%g2 + 1000], %i2
  7999.  
  8000. But a compiler generating object code is free to utilize the first form.
  8001.  
  8002. Richard Gorton        Alpha AXP Migration Tools - Digital Equipment Corp.
  8003. Reply-to: gorton@tallis.enet.dec.com
  8004. [Is that an assembler limitation or a problem in the object format? -John]
  8005. -- 
  8006. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8007. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8008.  
  8009.  
  8010. From compilers Tue Feb 23 13:08:18 EST 1993
  8011. Newsgroups: comp.compilers
  8012. Path: iecc!compilers-sender
  8013. From: Michael Dyck <dyck@cs.sfu.ca>
  8014. Subject: parser-generators for RRPGs: summary
  8015. Message-ID: <93-02-125@comp.compilers>
  8016. Keywords: parse, summary, EBNF
  8017. Sender: compilers-sender@iecc.cambridge.ma.us
  8018. Organization: Compilers Central
  8019. References: <93-01-206@comp.compilers>
  8020. Date: Mon, 22 Feb 1993 23:35:04 GMT
  8021. Approved: compilers@iecc.cambridge.ma.us
  8022.  
  8023. I wrote:
  8024. > Regular right-part grammars (RRPGs) are a kind of phrase structure
  8025. > grammar akin to context-free grammars (CFGs). In each production of an
  8026. > RRPG, the LHS is a single non-terminal (as in a CFG), but the RHS is a
  8027. > regular expression (or finite automaton) over the symbol set (rather
  8028. > than simply a sequence of symbols, as in a CFG).
  8029. >
  8030. > There are various notations for writing RRPGs (or slight restrictions
  8031. > thereof), many called "extended BNF".
  8032. > ...
  8033. > What parser-generators are available that accept some form of RRPG?
  8034.  
  8035. Here's a summary of the replies. Thanks to:
  8036.  
  8037. Kiong Beng Kee        isckbk@nuscc.nus.sg
  8038. Karsten Nyblad        karsten@tfl.dk
  8039. Anton Ertl            anton@mips.complang.tuwien.ac.at
  8040. Todd Jonker           tjonker@cs.cmu.edu
  8041. Tim Channon           tchannon@black.demon.co.uk
  8042. Paul Oude-Luttighuis  oudelutt@cs.utwente.nl
  8043. Taylor Hutt           thutt@mail.casi.nasa.gov
  8044. Terence J Parr        parrt@ecn.purdue.edu
  8045. Thomas Reid           reid@cherry.iss.nus.sg
  8046. Judith Grass          grass@research.att.com
  8047. Xorian Technologies   xorian@solomon.technet.sg
  8048.  
  8049. I have divided RRPG parser-generators into three categories, according
  8050. to the approach taken.
  8051.  
  8052. Convert the RRPG to a CFG and use a 'conventional' parser generator:
  8053. --------------------------------------------------------------------
  8054.  
  8055. Lalr, Ell (in Cocktail toolkit [formerly called Toolbox?])
  8056.   GMD Forschungsstelle an der Universitaet Karlsruhe
  8057.   grosch@karlsruhe.gmd.de
  8058.   ftp: ftp.gmd.de:gmd/cocktail
  8059.  
  8060. ESP (Extensible Syntax Parser)
  8061.   work-in-progress
  8062.   Todd Jonker at CMU
  8063.   (uses a Tomita parallel parser to do the parsing)
  8064.  
  8065. Generate a top-down parser directly from the RRPG:
  8066. --------------------------------------------------
  8067.  
  8068. reference:
  8069.   Barrett, Bates, Gustafson, and Couch
  8070.   "Compiler Construction - Theory and Practice, 2nd Edition",
  8071.   pp. 167-173
  8072.   (see article 93-02-024)
  8073.  
  8074. ANTLR,  the parser-generator in PCCTS
  8075.   (Purdue Compiler Construction Tool Set)
  8076.   (see article 93-02-009)
  8077.   ftp: marvin.ecn.purdue.edu:pub/pccts/1.06
  8078.  
  8079. Gray
  8080.   written in Forth
  8081.   available from anton@mips.complang.tuwien.ac.at
  8082.   (see article 92-05-111)
  8083.  
  8084. Generate a bottom-up parser directly from the RRPG:
  8085. ---------------------------------------------------
  8086.  
  8087. LADE  (LAnguage Definition Environment)
  8088.   Xorian Technologies Pte. Ltd
  8089.   (see article 92-05-061)
  8090.  
  8091. LALR
  8092.   ProSoft (formerly LALR Research)
  8093.   (see article 93-02-005)
  8094.  
  8095. Yacc++
  8096.   Compiler Resources, Inc.
  8097.   (see articles 92-06-142, 91-12-061, 91-09-005, 91-08-132, 91-04-071,
  8098.    and 91-03-095)
  8099.  
  8100. Ryacc
  8101.   Judith Grass at AT&T Bell Labs
  8102.   in-house research prototype
  8103.   Has "several (hefty) papers on Ryacc that are distributable."
  8104.   (see article 91-05-069)
  8105.  
  8106. ?
  8107.   work-in-progress
  8108.   Karsten Nyblad at TFL, A Danish telecommunications research lab
  8109.   (see article 91-05-076)
  8110.  
  8111. ---------------------------------------------------
  8112.  
  8113. Also, there are lists of references on RRPGs in
  8114.   91-05-069
  8115.   91-05-076
  8116.   92-06-111
  8117.  
  8118. -Michael Dyck, dyck@cs.sfu.ca
  8119. -- 
  8120. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8121. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8122.  
  8123.  
  8124. From compilers Tue Feb 23 13:12:24 EST 1993
  8125. Newsgroups: comp.compilers
  8126. Path: iecc!compilers-sender
  8127. From: bnell@siemens.com (Bill Nell)
  8128. Subject: question to PCCTS users
  8129. Message-ID: <93-02-126@comp.compilers>
  8130. Keywords: PCCTS, question
  8131. Sender: compilers-sender@iecc.cambridge.ma.us
  8132. Organization: Siemens Corporate Research, Princeton (Plainsboro), NJ
  8133. Date: Tue, 23 Feb 1993 14:23:37 GMT
  8134. Approved: compilers@iecc.cambridge.ma.us
  8135.  
  8136. I have a couple questions about PCCTS (v1.06) that hopefully some of the
  8137. PCCTS users out there can answer.
  8138.  
  8139. 1) When compiling antlr with itself I get the following warnings.
  8140.  
  8141. ../bin/antlr antlr.g
  8142. Antlr parser generator   Version 1.06   1989-1992
  8143. antlr.g, line 345: warning: optional path and alt(s) of (..)* ambiguous upon
  8144.      { "#errclass" }
  8145. antlr.g, line 454: warning: alts 1 and 2 of {..} ambiguous upon { Action }
  8146. antlr.g, line 525: warning: alts 1 and 2 of {..} ambiguous upon { Action }
  8147. antlr.g, line 583: warning: alts 1 and 2 of {..} ambiguous upon { PassAction }
  8148. antlr.g, line 587: warning: alts 1 and 2 of {..} ambiguous upon { "\>" }
  8149. antlr.g, line 599: warning: alts 1 and 2 of {..} ambiguous upon { PassAction }
  8150. antlr.g, line 609: warning: alts 1 and 3 of (..) ambiguous upon { "\*" }
  8151. antlr.g, line 610: warning: alts 2 and 3 of (..) ambiguous upon { "\+" }
  8152. antlr.g, line 613: warning: alts 1 and 2 of {..} ambiguous upon { PassAction }
  8153. antlr.g, line 615: warning: alts 1 and 2 of {..} ambiguous upon { PassAction }
  8154.  
  8155. Is this normal?
  8156.  
  8157. 2) The documentation that comes with PCCTS says that using multiple parsers or
  8158. calling a single parser multiple times does not work.  But, in the BUGS100
  8159. file it says:
  8160.  
  8161. (11) As per the manual, PCCTS had a problem with multiple ANTLR  macro
  8162.      invocations.   This has been fixed (we think).  In file dlgauto.h
  8163.      in the pccts/h directory make the following additions:
  8164.  
  8165. ... bug fix stuff deleted ...
  8166.  
  8167. You should be able to do this:
  8168.  
  8169. parse(f1,f2)
  8170. FILE *f1, *f2;
  8171. {
  8172.      ANTLR(grammar(), f1);
  8173.      ANTLR(grammar(), f2);
  8174. }
  8175.  
  8176. Before, the second invocation of the ANTLR macro did not know that it
  8177. needed to get another character before beginning.  Let us know if this
  8178. screws up anything else.  Be aware that switching between input streams
  8179. will not work because characters are lost when switching to a new stream.
  8180.  
  8181.  
  8182. My questions are: Do multiple parsers/multiple parser invocations work
  8183. now?  And, I am confused about the last line in the last paragraph.  To me
  8184. it basically means that a PCCTS lexer/parser would not be able to handle
  8185. things like #include files, where you would have to switch the input
  8186. buffer to read from a new file.  Is this what that last line really means?
  8187.  
  8188.  
  8189. Thanks in advance for any help.
  8190. Bill
  8191.  
  8192. --
  8193. bnell@scr.siemens.com
  8194. Siemens Corporate Research
  8195. 755 College Road East
  8196. Princeton, NJ 08540
  8197. -- 
  8198. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8199. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8200.  
  8201.  
  8202. From compilers Tue Feb 23 13:13:32 EST 1993
  8203. Newsgroups: comp.compilers
  8204. Path: iecc!compilers-sender
  8205. From: ebcrmb@ebc.ericsson.se (BO/EBC/KX/ZG Michael Bergman 682 4958)
  8206. Subject: Chomsky Normal Form and parsing
  8207. Message-ID: <93-02-127@comp.compilers>
  8208. Keywords: parse, question
  8209. Sender: compilers-sender@iecc.cambridge.ma.us
  8210. Organization: Compilers Central
  8211. Date: Tue, 23 Feb 1993 17:17:35 GMT
  8212. Approved: compilers@iecc.cambridge.ma.us
  8213.  
  8214. Hi everyone,
  8215. I have some more entangled(?) questions on CFG's.
  8216.  
  8217. This time it's Chomsky and Greibach normal forms I'm interested in.
  8218.  
  8219. "Languages and Machines" by Tomas A. Sudkamp [1988]
  8220. ISBN 0-201-15768-3
  8221. Addison-Wesley
  8222.  
  8223. contains some interesting stuff. A friend of mine had this at hand, so I
  8224. cite him:
  8225.  
  8226. Definition Chomsky Normal Form:
  8227.  
  8228. Grammar G = (V,Sigma,P,S) (Variables, alphabet, productions, start) All
  8229. productions are in one of the forms:
  8230.  
  8231.     1. A -> BC
  8232.     2. A -> a
  8233.     3. S -> epsilon
  8234.  
  8235.     B and C != S, A is arbitrary (specifically, it can be S)
  8236.     (Note that S is the only production that can have an epsilon.)
  8237.  
  8238. Theorem:
  8239.  
  8240. "Let G =(V,Sigma,P,S) be a CFG. There is an algorithm to construct a
  8241. grammar G' = (V,Sigma,P',S) in Chomsky NF that is equivalent to G."
  8242.  
  8243.  
  8244. Note that there are no other restrictions here, according to Sudkamp this
  8245. works on all CFG's.
  8246. These steps are used in the conversion:
  8247. 1. Make S non-recursive
  8248. 2. Eliminate all epsilon except the one in S (if there is one)
  8249. 3. Eliminate all chain rules
  8250. 4. Remove useless symbols (the ones not used in any production).
  8251.  
  8252. (After this, one can eliminate left-recursion to make it predictive
  8253. parseable.)
  8254.  
  8255. The question is: what's the practical use of this?
  8256. Can we parse this Chomsky Normal Form for sure using some parsing method?
  8257. Which one in that case? (I do suspect the answer is no... :-(
  8258. If not, are there some "well" defined restrictions one can put on the CFG
  8259. (e.g. unamiguity) to make the parsing possible or even more feasible?
  8260.  
  8261. There is also the Greibach NF which probably is better for LL/predictive
  8262. parsing, it is inherently non-left recursive for example.  The problem is
  8263. that the conversion is *nasty*, having exponential behaviour in the worst
  8264. case.  Is there a theorem stating that it is always possible to convert to
  8265. Greibach NF?  Apparently, the theorem above says that for Chomsky NF.
  8266.  
  8267. [added later -John]
  8268. I just found a comment on this in a comp.compilers article from May 1992:
  8269.  
  8270. Jonathan Eifrig (eifrig@blaze.cs.jhu.edu) writes:
  8271.  
  8272. > We want don't so much want to recognize a
  8273. > *language* so much as generate a parse tree of the input for a particular
  8274. > grammar.  The *grammar* itself is important; if one has to contort the
  8275. > "natural" grammar (i.e., the one that matches the semantic grouping) of
  8276. > language in order to accomodate our parsing scheme, this is a serious dis-
  8277. > advantage.  This is why, for example, we don't just convert our ambiguous
  8278. > grammars into Chomsky normal form and apply the obvious dynamic
  8279. > programming parsing scheme.  We'll see in a minute that both LL(k) and
  8280. > LR(1) parsing schemes suffer from this problem.
  8281.  
  8282. I guess that says it all unless someone else has any comments.
  8283.  
  8284. However, since it is possible to do the conversion at least
  8285. semi-automatically, maybe one could try it and see if the result is
  8286. acceptable or not. I haven't tried this myself so I don't know what it
  8287. looks like (but I can imagine it will be pretty difficult to read).
  8288.  
  8289. So - what's the "dynamic programming parsing scheme"? I'll be happy with
  8290. an overview of the method + a pointer to any refs if there are any.
  8291.  
  8292. M
  8293. --
  8294. Michael Bergman                Email: ebcrmb@ebc.ericsson.se
  8295. KX/ZGE                    Tfn:   +46 8 6824958
  8296. Ericsson Business Networks
  8297. S-135 83 Tyreso, Sweden
  8298. -- 
  8299. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8300. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8301.  
  8302.  
  8303. From compilers Tue Feb 23 15:31:23 EST 1993
  8304. Newsgroups: comp.compilers
  8305. Path: iecc!compilers-sender
  8306. From: forrest@nobozo.CS.Berkeley.EDU (Jon Forrest)
  8307. Subject: Another Issue in Compiler Generated Assembly Code
  8308. Message-ID: <93-02-128@comp.compilers>
  8309. Keywords: assembler, comment
  8310. Sender: compilers-sender@iecc.cambridge.ma.us
  8311. Organization: University of California, Berkeley
  8312. Date: Tue, 23 Feb 1993 18:27:01 GMT
  8313. Approved: compilers@iecc.cambridge.ma.us
  8314.  
  8315. Another issue for compiler writers to keep in mind is that if their
  8316. compiler produces assembly code, then it should 1) produce assembly code
  8317. that the assembler can actually assemble, and 2) produce assembly code
  8318. that, when assembled, is the same as the object code produced by the
  8319. compiler.
  8320.  
  8321. I used to work at one of the major database vendors in the VMS development
  8322. group. We found that the VMS C compiler didn't do either.  #1 is obvious
  8323. since the compiler puts all kinds of listing information and other cruft
  8324. in the assembler output. But, by clever use of awk filters on Unix we were
  8325. able to get around this. What was worse was #2. The compiler would
  8326. generate floating point constants in the assembler that used the wrong
  8327. syntax so that the end result was different code than that produced by the
  8328. compiler.
  8329.  
  8330. To top it off, what was even worse than either of these was the admittedly
  8331. unofficial reaction of the C compiler engineers I described this to at a
  8332. DECUS meeting. They said that since the compiler obviously didn't produce
  8333. assembler code to be compiled that they didn't think that #2 was a bug or
  8334. even worth thinking about.
  8335. --
  8336. Jon Forrest WB6EDM     forrest@cs.berkeley.edu     510-643-6764
  8337. [It's quite typical for compiler listings of assembler output not to be
  8338. legal assembler input.  Compiler authors are rarely sympathetic to the
  8339. thought that you might massage their assembler and assemble the result --
  8340. after all, if it were possible to make the assembler output better, they
  8341. would already have done so. -John]
  8342. -- 
  8343. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8344. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8345.  
  8346.  
  8347. From compilers Tue Feb 23 18:01:56 EST 1993
  8348. Newsgroups: comp.compilers
  8349. Path: iecc!compilers-sender
  8350. From: jgmorris+@VACHE.VENARI.CS.CMU.EDU (Greg Morrisett)
  8351. Subject: 1st CFV: comp.lang.ml
  8352. Message-ID: <93-02-129@comp.compilers>
  8353. Followup-To: news.groups
  8354. Originator: jgmorris@VACHE.VENARI.CS.CMU.EDU
  8355. Keywords: ML, administrivia
  8356. Sender: compilers-sender@iecc.cambridge.ma.us
  8357. Organization: School of Computer Science, Carnegie Mellon
  8358. Date: Tue, 23 Feb 1993 18:57:28 GMT
  8359. Approved: compilers@iecc.cambridge.ma.us
  8360.  
  8361. Following the required discussion period, in which consensus appears to
  8362. have been reached, this is the first call for votes for the creation of
  8363. comp.lang.ml.  This note contains information about the proposed group and
  8364. voting instructions.  Please read the entire post before responding.  In
  8365. particular, please read the "How to Vote" section before responding.
  8366.  
  8367. ----------------------------------------------------------------------------
  8368.                             1st CALL FOR VOTES
  8369.  
  8370. Proposed Newsgroup:  comp.lang.ml
  8371. ------------------
  8372.               Type:  Moderated
  8373.               ----
  8374.          Moderator:  Greg Morrisett, Carnegie Mellon, jgmorris@cs.cmu.edu
  8375.          ---------           (submission address to be announced.)
  8376.        Description:  Discussion about the family of ML languages including
  8377.        -----------     but not limited to Standard ML, CAML, Caml-light, and
  8378.                        Lazy ML.
  8379.  
  8380. Charter:
  8381. -------
  8382.   Comp.lang.ml is a moderated newsgroup exclusively for discussion
  8383.   of ML.  ML is a family of advanced programming languages with [usually]
  8384.   functional control structures, strict semantics, a strict polymorphic type
  8385.   system, and parametrized modules.  It includes Standard ML, Lazy ML,
  8386.   CAML, CAML Light, and various research languages.  Implementations are
  8387.   available on many platforms, including PCs, mainframes, most models of
  8388.   workstation, multi-processors and supercomputers.  ML has many
  8389.   thousands of users, is taught at many universities (and is the first
  8390.   programming language taught at some).
  8391.  
  8392.   Topics for discussion would include (but are not limited to):
  8393.    * general ML enquiries or discussion
  8394.    * general interpretation of the definition of Standard ML
  8395.    * applications and use of ML
  8396.    * announcements of general interest (e.g. compiler releases)
  8397.    * discussion of semantics including sematics of extensions based on ML
  8398.    * discussion about library structure and content
  8399.    * tool development
  8400.    * comparison/contrast with other languages
  8401.    * implementation issues, techniques and algorithms including extensions
  8402.        based on ML
  8403.  
  8404. Moderation Guidelines:
  8405. ----------------------
  8406.   The moderator will maintain and post weekly and monthly frequently
  8407.   asked questions (FAQ) lists.  Moderation will be done according to
  8408.   the following guidelines:
  8409.  
  8410.     1. An article that has no relevance to ML will be rejected by the
  8411.        moderator.  However, the moderator will attempt to tell the
  8412.        poster a more appropriate place for the article.
  8413.  
  8414.     2. An article might be rejected if the poster asks a question that
  8415.        is answered by the FAQ lists.  However, the moderator will forward
  8416.        the relevant portion(s) of the FAQ answers to the poster.
  8417.  
  8418.     3. The moderator reserves the right to trim down quotations of
  8419.        previous articles and to reject articles consisting essentially
  8420.        of quotations.
  8421.  
  8422.     4. The moderator reserves the right to send a "poorly" written article
  8423.        back to the poster, requesting that it be re-written.
  8424.  
  8425.     5. All other articles will be forwarded by the moderator.
  8426.  
  8427.     6. The moderator might add his/her own comments at the end of an
  8428.        article, such as [See the Commentary, pp.123-125] or
  8429.        [This question has been asked several times in the past, and
  8430.        never got an answer.]
  8431.  
  8432. Moderator Changes:
  8433. ------------------
  8434.   Guidelines for the removal or change of a moderator are as follows:
  8435.  
  8436.     1. An RFD on the removal of the moderator must be posted to
  8437.        news.announce.newgroups, news.groups, and comp.lang.ml.
  8438.        with the follow-ups sent to news.groups.
  8439.  
  8440.     2. Should there be a consensus that a vote is appropriate, a
  8441.        CFV will be issued by a third party, to last not less than
  8442.        two weeks and not more than 30 days. This ballot will include
  8443.        the following options:
  8444.  
  8445.                     a. Should the moderator be removed? (Y/N)
  8446.                     b. The new moderator should be: (names)
  8447.  
  8448.     3. If more than 2/3 of the voters agree that the moderator should
  8449.        be removed, and there are no more than 100 no votes, then the
  8450.        top name in section b becomes the new moderator. Each ballot
  8451.        can contain a vote for one and only one new moderator.
  8452.  
  8453. Justification:
  8454. -------------
  8455.   There is currently a group for ML in the alt hierarchy, alt.lang.ml.
  8456.   This has the disadvantages of any alt group: narrow distribution
  8457.   (especially outside the US, where much ML development goes on) and
  8458.   fast expiration. Some discussion of ML has gone on in
  8459.   comp.lang.functional and in comp.lang.misc.  An ML-specific newsgroup
  8460.   would concentrate these postings and provide a focus for people
  8461.   seeking information about or discussion of the language.
  8462.  
  8463.   There is also a moderated worldwide mailing list for Standard ML users
  8464.   maintained at Carnegie Mellon University and a mailing list for CAML
  8465.   users maintained at INRIA.  There are now several thousand readers of
  8466.   these lists. Currently several messages pass through these lists
  8467.   each week.  We do not propose the abandoment of these lists, but a
  8468.   moderated newsgroup would take most of the traffic from each of these
  8469.   lists and would provide a new forum for questions general to the
  8470.   family of ML languages (not just SML or CAML).
  8471.  
  8472.   People who cannot or do not want to read the newsgroup, can subscribe
  8473.   to the SML-LIST.  As maintainer of the list, I will cross-post messages
  8474.   from the newsgroup to the mailing list and vice-versa.
  8475.  
  8476.   We have chosen "comp.lang.ml" as a name, patterned after other newsgroups
  8477.   that discuss programming languages, such as "comp.lang.scheme".  We have
  8478.   chosen the ".ml" suffix to remind people that the newsgroup is open
  8479.   to all dialects of ML.  While some readers might mistakenly assume
  8480.   ".ml" stands for "machine language" or "machine learning", the moderator
  8481.   will prevent irrelevant posts from reaching readers and the FAQ lists
  8482.   will clear up any confusion.
  8483.  
  8484. Voting Period:
  8485. -------------
  8486.   Votes will be taken from 08:00:00 EST, February 23, 1993
  8487.   until 23:59:59 EST, March 20, 1993.
  8488.  
  8489. How to Vote:
  8490. -----------
  8491.   To vote "Yes", send mail to "jgmorris=yes@cs.cmu.edu".
  8492.  
  8493.   To vote "No", send mail to "jgmorris=no@cs.cmu.edu".
  8494.  
  8495.   Votes sent to these addresses are differentiated by mailing address
  8496.   _only_;  message contents and subject lines are ignored since the
  8497.   votes are processed by an automated script.
  8498.  
  8499.   If your mailer cannot handle one of these addresses, send your
  8500.   vote to "jgmorris@cs.cmu.edu" making sure to clearly specify whether
  8501.   you vote for or against the proposed newsgroup.  Use the following
  8502.   format in your message body:
  8503.  
  8504.     "I vote [Yes/No] for comp.lang.ml."
  8505.  
  8506.   If your message is ambiguous, it will not be counted (though I will
  8507.   attempt to return your message to you, asking for an unambiguous vote.)
  8508.  
  8509.   Your vote will be acknowledged by email.
  8510.  
  8511. Reminder of Voting Rules:
  8512. -------------------------
  8513.   - One vote per person.  If you vote more than once, only the most
  8514.     recent vote will be counted.
  8515.  
  8516.   - Votes must be mailed to one of the above addresses.  No proxy
  8517.     voting, forwarding, etc.  Posted votes (to any newsgroup or
  8518.     mailing list) will not be counted.
  8519.  
  8520.   - I will not be able to discuss the vote results until after the
  8521.     poll closes, so please do not ask how the vote is going.
  8522.  
  8523.   - Votes received outside of the voting period will be ignored.
  8524.  
  8525. Thanks and remember that your vote counts!
  8526. --
  8527. -Greg Morrisett
  8528.  Carnegie Mellon Univ.
  8529.  jgmorris@cs.cmu.edu
  8530. -- 
  8531. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8532. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8533.  
  8534.  
  8535. From compilers Tue Feb 23 23:29:49 EST 1993
  8536. Newsgroups: comp.compilers
  8537. Path: iecc!compilers-sender
  8538. From: hdev@dutiag.twi.tudelft.nl (Hans de Vreught)
  8539. Subject: Re: Chomsky Normal Form and parsing
  8540. Message-ID: <93-02-130@comp.compilers>
  8541. Keywords: parse, question
  8542. Sender: compilers-sender@iecc.cambridge.ma.us
  8543. Organization: Delft University of Technology
  8544. References: <93-02-127@comp.compilers>
  8545. Date: Tue, 23 Feb 1993 23:05:51 GMT
  8546. Approved: compilers@iecc.cambridge.ma.us
  8547.  
  8548. ebcrmb@ebc.ericsson.se (BO/EBC/KX/ZG Michael Bergman 682 4958) writes:
  8549. >Hi everyone, >I have some more entangled(?) questions on CFG's.
  8550.  
  8551. >This time it's Chomsky [...] normal forms I'm interested in.
  8552.  
  8553. >The question is: what's the practical use of this?
  8554.  
  8555. If we would leave the linguistic stuff aside (Noam Chomsky is a linguist), it
  8556. gives you a very simple form of a grammar caple to generate any CFL. That is
  8557. very practical in formal language proofs: you may assume the grammar for a CFL
  8558. is in CNF.
  8559.  
  8560. >Can we parse this Chomsky Normal Form for sure using some parsing method?
  8561.  
  8562. Furthermore, because any CFG can be put into CNF it is sufficient to have
  8563. a parser for grammars in CNF. Such a parser does exist. The
  8564. Cocke-Younger-Kasami algorithm is exactly such an algorithm. The CYK
  8565. algorithm is very simple and run in O(n^3) time. Since it can handle
  8566. ambigous grammars the mainstream applications for this algorithm can be
  8567. found in NLP.
  8568.  
  8569. One step further, Rytter has parallelize this algorithm to obtain a fast
  8570. parallel algorithm running in O(log n) time with O(n^6) processors on a
  8571. CRCW-PRAM. O.K. O(n^6) sounds bad, but it gives the best time complexity
  8572. known.
  8573. --
  8574. Hans de Vreught
  8575. hdev@dutiba.twi.tudelft.nl
  8576. Delft University of Technology (TWI-ThI)
  8577. The Netherlands
  8578. -- 
  8579. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8580. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8581.  
  8582.  
  8583. From compilers Tue Feb 23 23:32:03 EST 1993
  8584. Newsgroups: comp.compilers
  8585. Path: iecc!compilers-sender
  8586. From: eifrig@beanworld.cs.jhu.edu (Jonathan Eifrig)
  8587. Subject: Re: Chomsky Normal Form and parsing
  8588. Message-ID: <93-02-131@comp.compilers>
  8589. Keywords: parse, theory
  8590. Sender: compilers-sender@iecc.cambridge.ma.us
  8591. Organization: The Johns Hopkins University CS Department
  8592. References: <93-02-127@comp.compilers>
  8593. Date: Wed, 24 Feb 1993 00:29:38 GMT
  8594. Approved: compilers@iecc.cambridge.ma.us
  8595.  
  8596. In article <93-02-127@comp.compilers> ebcrmb@ebc.ericsson.se (BO/EBC/KX/ZG
  8597. >I have some more entangled(?) questions on CFG's.
  8598. >
  8599. >This time it's Chomsky and Greibach normal forms I'm interested in.
  8600. >
  8601. >    [definition of CNF grammars deleted]
  8602. >
  8603. >The question is: what's the practical use of this?
  8604. >Can we parse this Chomsky Normal Form for sure using some parsing method?
  8605.  
  8606. >[added later -John]
  8607. >I just found a comment on this in a comp.compilers article from May 1992:
  8608. Jonathan Eifrig (eifrig@blaze.cs.jhu.edu) writes:
  8609.  
  8610. > We want don't so much want to recognize a
  8611. > *language* so much as generate a parse tree of the input for a particular
  8612. > grammar.  The *grammar* itself is important; if one has to contort the
  8613. > "natural" grammar (i.e., the one that matches the semantic grouping) of
  8614. > language in order to accomodate our parsing scheme, this is a serious dis-
  8615. > advantage.  This is why, for example, we don't just convert our ambiguous
  8616. > grammars into Chomsky normal form and apply the obvious dynamic
  8617. > programming parsing scheme.  We'll see in a minute that both LL(k) and
  8618. > LR(1) parsing schemes suffer from this problem.
  8619.  
  8620.     Wow!  Let me tell you, seeing an article you posted almost a year
  8621. ago makes one sit up and take notice!  Stop the compliments, before they
  8622. fool me into writing a book.  :-)
  8623.  
  8624.     As far as the parsing scheme goes, it's very simple.  (Like most
  8625. algorithms, its obvious, once you see the trick.)  Consider a CNF with k
  8626. non-terminal symbols, m terminal symbols, and n productions.  To answer
  8627. "Is string a in the language generated by the grammar?", we do the
  8628. following:
  8629.  
  8630.     Let a[i,j] be the substring of the input from position i to
  8631. position j in the input (0 < i,j <= n).  We build a table telling us, for
  8632. every i and j, which (if any) of the grammar symbols could generate the
  8633. string a[i,j].  Once we have the table, we just check to see if the start
  8634. symbol could have generated a[1,n].
  8635.  
  8636.     We build the table by induction on the length of the substrings
  8637. a[i,j].  For substrings of length 1, this is easy: A could generate
  8638. a[i,i+1] = a if and only if A -> a is a production of the grammar.  For
  8639. longer strings, we just check exhaustively: For each production A ->BC, we
  8640. check to see if there exists a k (between i and j) such that B generates
  8641. a[i,k] and C generates a[k+1,j]; since these substrings are shorter that
  8642. a[i,j] these answers are already in the table.
  8643.  
  8644.     A relatively straightforward counting argument shows that this
  8645. brute-force approach is even "efficient," at least as far a theorists are
  8646. concerned: it takes worst-case O(n^3) time.  For a fixed-size grammar,
  8647. it's a little better: O(n^2).  This is well-known automata theory stuff.
  8648. (In fact, it was one of the questions on my qualifier!  :-)) For a more
  8649. detailed explanation, see my favorite baby automata book "An Introduction
  8650. to Formal Languages and Automata" by Linz.
  8651.  
  8652.     Of course, these are the wrong sorts of parsing questions to ask,
  8653. in practice.  As I argued above, there's very little use for a parser that
  8654. just answers "Yes" or "No"; what one _really_ needs is a parser that
  8655. generates a parse tree of the input.
  8656. --
  8657. Jack Eifrig (eifrig@cs.jhu.edu)       The Johns Hopkins University, C.S. Dept.
  8658. -- 
  8659. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8660. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8661.  
  8662.  
  8663. From compilers Tue Feb 23 23:33:07 EST 1993
  8664. Newsgroups: comp.compilers
  8665. Path: iecc!compilers-sender
  8666. From: dietz@cs.rochester.edu (Paul Dietz)
  8667. Subject: Re: C++ symbol table
  8668. Message-ID: <93-02-132@comp.compilers>
  8669. Keywords: C++, parse
  8670. Sender: compilers-sender@iecc.cambridge.ma.us
  8671. Organization: University of Rochester
  8672. References: <93-02-101@comp.compilers> <93-02-114@comp.compilers>
  8673. Date: Tue, 23 Feb 1993 18:31:17 GMT
  8674. Approved: compilers@iecc.cambridge.ma.us
  8675.  
  8676. chased@rbbb.Eng.Sun.COM (David Chase) writes:
  8677. > I don't have a complete answer, but I do have a suggestion.  There was a
  8678. > nifty trick proposed by Paul Dietz in STOC '81, and it has been used with
  8679. > some success by several people that I know (in fact, it has been
  8680. > rediscovered with some success by several people, and we (= me, Wegman,
  8681. > Zadeck) used it in a different context to get good time bounds for a sort
  8682. > of incremental SSA.  ...
  8683.  
  8684. The problem I was solving can be abstracted as follows.  Let T be a tree
  8685. whose nodes are labelled with names drawn from some set N.  Initially, the
  8686. tree consists of a single node with the null label.  The tree is updated
  8687. by the operation AddLeaf(x,n), which creates a new leaf y with parent x
  8688. and label n, returning a pointer to y.  The query FindAncestor(x,n) finds
  8689. the deepest ancestor of x with label n (possibly x itself), or null if no
  8690. such ancestor exists.
  8691.  
  8692. This gets solved as follows.  We store the nodes of the tree in a list, in
  8693. preorder.  Each label occuring in the tree decomposes the tree into
  8694. connected subgraphs on which the FindAncestor queries for that label
  8695. return the same answer.  These subgraphs induce a decomposition on the
  8696. preorder list.  One can easily show that if a particular label occurs k
  8697. times, it induces a partition of the preorder list into at most 2k+1
  8698. sublists.  We can represent this decomposition by storing the first
  8699. element of each of the sublists in a binary search tree, where the
  8700. comparison operation is "does this node occur before this node in the
  8701. list?"
  8702.  
  8703. It turns out one can implement insertions, deletions and these order
  8704. queries in a list in constant time per operation (the STOC 81 paper was
  8705. foolishly off by log* n; Tarjan and also Tsakalidis pointed out a trick to
  8706. get linear amortized time, and Dietz and Sleator (STOC 87) showed how to
  8707. do it in constant single operation time; we also gave a simpler amortized
  8708. constant time algorithm, using an idea related to one obtained by
  8709. Leiserson).  This lets one do operations on the trees in O(log k) time,
  8710. where k is the number of times the label appears in the tree.
  8711.  
  8712. I later shows (WADS 89) how to do all these operations in O(loglogn)
  8713. amortized time per operation (on a RAM).  This algorithm is completely
  8714. impractical, however.
  8715.  
  8716. Related to all this is work on so-called "fully persistent data
  8717. structures"; see Driscoll, Sarnak, Sleator and Tarjan (JCSS 89), as well
  8718. as algorithms for maintaining sorted arrays with density > some positive
  8719. constant in O(log^2 n) time per insertion.
  8720.  
  8721. (Dave: I'd love to see some references to people using this stuff.)
  8722.  
  8723.     Paul F. Dietz
  8724.     dietz@cs.rochester.edu
  8725. -- 
  8726. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8727. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8728.  
  8729.  
  8730. From compilers Tue Feb 23 23:34:01 EST 1993
  8731. Newsgroups: comp.compilers
  8732. Path: iecc!compilers-sender
  8733. From: soohongk@usc.edu (Soohong Kim)
  8734. Subject: C Compiler using source-to-source restructurer.
  8735. Message-ID: <93-02-133@comp.compilers>
  8736. Keywords: C, optimize, question, parallel
  8737. Sender: compilers-sender@iecc.cambridge.ma.us
  8738. Organization: University of Southern California, Los Angeles, CA
  8739. Date: Wed, 24 Feb 1993 03:58:10 GMT
  8740. Approved: compilers@iecc.cambridge.ma.us
  8741.  
  8742. Hello,
  8743.  
  8744. I am planning to build Parallelizing C Compiler for SNAP, which is MIMD
  8745. machine being built at USC.
  8746.  
  8747. One of choices of compiler models I am interested in is to use
  8748. "source-to-source parallelizing restructurer" such as Parafrase-2 and
  8749. PFC+. I want to use Parafrase-2 as a compiler-preprocessor.
  8750.  
  8751. Here's my draft!
  8752. ----------------------------------------------------------------------
  8753.  
  8754.   C  ==> [RESTRUCTURER] ==>  C'  ==> [COMPILER] ==> machine code
  8755.  
  8756.  --------------------------------------------------------------------
  8757.  
  8758.     C        : Sequential C source code.
  8759.     C'        : Concurrent form of C source code.
  8760.     machine code    : Machine code for SNAP.
  8761.     [RESTRUCTURER]    : Source-to-source parallelizing restructurer.
  8762.     [COMPILER]    : Optimizing Compiler.
  8763. ----------------------------------------------------------------------
  8764.  
  8765. The problem is that Restructurer for C (C phase of Parafrase-2) is yet
  8766. working properly, although FORTRAN restructurer is doing a good job.
  8767.  
  8768. So, at this point, I want to build compiler for subset of C with the
  8769. current techniques of the FORTRAN compiler with restructurer, then broaden
  8770. the range of the source program.
  8771.  
  8772. Is there any research group who is building compilers (either for C or
  8773. FORTRAN) using source-to-source restructurer? I need your advice.
  8774.  
  8775. All comments are welcome.
  8776.  
  8777. Soohong Peter Kim                soohongk@scf.usc.edu
  8778. --
  8779. Soohong Peter Kim               Internet: soohongk@usc.edu
  8780. Department of Electrical Engineering       Room: 222 in EE-Building
  8781. University of Southern California       Phone: +1-213-740-9132
  8782. Los Angeles, CA 90089, USA
  8783. -- 
  8784. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8785. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8786.  
  8787.  
  8788. From compilers Wed Feb 24 13:03:23 EST 1993
  8789. Newsgroups: comp.compilers
  8790. Path: iecc!compilers-sender
  8791. From: toddpw@cco.caltech.edu (Todd P. Whitesel)
  8792. Subject: Re: Another Issue in Compiler Generated Assembly Code
  8793. Message-ID: <93-02-134@comp.compilers>
  8794. Keywords: assembler
  8795. Sender: compilers-sender@iecc.cambridge.ma.us
  8796. Organization: California Institute of Technology, Pasadena
  8797. References: <93-02-128@comp.compilers>
  8798. Date: Wed, 24 Feb 1993 09:31:22 GMT
  8799. Approved: compilers@iecc.cambridge.ma.us
  8800.  
  8801. forrest@nobozo.CS.Berkeley.EDU (Jon Forrest) writes:
  8802. >Another issue for compiler writers to keep in mind is that if their
  8803. >compiler produces assembly code, then it should 1) produce assembly code
  8804. >that the assembler can actually assemble, and 2) produce assembly code
  8805. >that, when assembled, is the same as the object code produced by the
  8806. >compiler.
  8807.  
  8808. I quite agree with #1, because one fast way to get a new compiler up and
  8809. running is to have it push off a lot of tasks onto the assembler;
  8810. naturally you have to output assembly that will be accepted if this is
  8811. going to work.
  8812.  
  8813. However, #2 is a bit unreasonable for third party compiler writers. It
  8814. would require the very last stage of the compiler to duplicate the second
  8815. half of the local assembler; this is wasteful enough, but what really
  8816. gives it problems is trying to support multiple assemblers that accept
  8817. essentially the same syntax but have quite different ideas of how to
  8818. organize things. Sure, it would be nice, but it has a tendency to be
  8819. impractical in a multiplatform environment.
  8820.  
  8821. Todd Whitesel
  8822. toddpw @ cco.caltech.edu
  8823. -- 
  8824. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8825. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8826.  
  8827.  
  8828. From compilers Wed Feb 24 13:04:23 EST 1993
  8829. Xref: iecc gnu.misc.discuss:8767 comp.compilers:4305
  8830. Newsgroups: gnu.misc.discuss,comp.compilers
  8831. Path: iecc!compilers-sender
  8832. From: grlw1@cus.cam.ac.uk (Rich Walker)
  8833. Subject: Gnu Super Optimiser & Conditional instructions
  8834. Message-ID: <93-02-135@comp.compilers>
  8835. Keywords: optimize, question
  8836. Sender: compilers-sender@iecc.cambridge.ma.us
  8837. Organization: U of Cambridge, England
  8838. Date: Wed, 24 Feb 1993 11:01:31 GMT
  8839. Approved: compilers@iecc.cambridge.ma.us
  8840.  
  8841. Has anyone modified GSO to handle processors with conditional
  8842. instructions? It's another of those things that'd be nice to have, but it
  8843. looks like requiring a fair degree of understanding of the exact methods
  8844. of GSO...
  8845.  
  8846. --- Rich! Walker (grlw1@cus.cam.ac.uk)
  8847. -- 
  8848. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8849. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8850.  
  8851.  
  8852. From compilers Wed Feb 24 13:05:32 EST 1993
  8853. Newsgroups: comp.compilers
  8854. Path: iecc!compilers-sender
  8855. From: hdev@dutiak.twi.tudelft.nl (Hans de Vreught)
  8856. Subject: Re: Chomsky Normal Form and parsing
  8857. Message-ID: <93-02-136@comp.compilers>
  8858. Keywords: parse, theory
  8859. Sender: compilers-sender@iecc.cambridge.ma.us
  8860. Organization: Delft University of Technology
  8861. References: <93-02-127@comp.compilers> <93-02-131@comp.compilers>
  8862. Date: Wed, 24 Feb 1993 11:40:04 GMT
  8863. Approved: compilers@iecc.cambridge.ma.us
  8864.  
  8865.  
  8866. ebcrmb@ebc.ericsson.se (BO/EBC/KX/ZG
  8867. >Can we parse this Chomsky Normal Form for sure using some parsing method?
  8868.  
  8869. eifrig@beanworld.cs.jhu.edu (Jonathan Eifrig) writes:
  8870. >    Of course, these are the wrong sorts of parsing questions to ask,
  8871. >in practice.  As I argued above, there's very little use for a parser that
  8872. >just answers "Yes" or "No"; what one _really_ needs is a parser that
  8873. >generates a parse tree of the input.
  8874.  
  8875. Ah, but such a parser *does* exist. In the recognition phase an upper
  8876. triangular matrix is filled in such a way such that every partial parse
  8877. can be retrieved. So after that phase you only have to look why the answer
  8878. on the recognition question was yes. While establishing that justification
  8879. you are able to retrieve a parse tree. Since the parsing stage is simple
  8880. the total complexity for recognition and parsing is O(n^3).
  8881.  
  8882. Like I said before (in a previous posting), algorithms for CFGs in CNF are
  8883. used frequently. However, not in compiler design but in natural language
  8884. processing.
  8885. --
  8886. Hans de Vreught
  8887. hdev@dutiba.twi.tudelft.nl
  8888. Delft University of Technology (TWI-ThI)
  8889. The Netherlands
  8890. -- 
  8891. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8892. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8893.  
  8894.  
  8895. From compilers Wed Feb 24 13:06:41 EST 1993
  8896. Xref: iecc comp.compilers:4307 comp.lang.c:41552
  8897. Newsgroups: comp.compilers,comp.lang.c
  8898. Path: iecc!compilers-sender
  8899. From: e87cho@efd.lth.se (Christer Holmfors)
  8900. Subject: C-compiler for MC 68HC11
  8901. Message-ID: <93-02-137@comp.compilers>
  8902. Keywords: C, question
  8903. Sender: compilers-sender@iecc.cambridge.ma.us
  8904. Reply-To: e87cho@efd.lth.se (Christer Holmfors)
  8905. Organization: Lund Institute of Technology
  8906. Date: Wed, 24 Feb 1993 14:14:16 GMT
  8907. Approved: compilers@iecc.cambridge.ma.us
  8908.  
  8909. Hi!  I am interested in finding a C-compiler which generates code
  8910. (assembler code) for Motorola 68HC11. It should run on PC and/or
  8911. unix-workstation.  Of course I prefer a c-compiler with the source code is
  8912. available but this isn't necessary. Is there perhaps a modified gcc out
  8913. there?
  8914.  
  8915. Thanks for any help!!
  8916.  
  8917. Christer
  8918. --
  8919.   Christer Holmfors,    student at Lund Institute of Technology
  8920.   email: e87cho@efd.lth.se
  8921. -- 
  8922. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8923. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8924.  
  8925.  
  8926. From compilers Wed Feb 24 13:09:04 EST 1993
  8927. Newsgroups: comp.compilers
  8928. Path: iecc!compilers-sender
  8929. From: wjw@eb.ele.tue.nl (Willem Jan Withagen)
  8930. Subject: New Alpha release of PASCAL frontend
  8931. Message-ID: <93-02-138@comp.compilers>
  8932. Keywords: Pascal, tools, FTP
  8933. Sender: compilers-sender@iecc.cambridge.ma.us
  8934. Organization: Compilers Central
  8935. Date: Wed, 24 Feb 1993 14:49:03 GMT
  8936. Approved: compilers@iecc.cambridge.ma.us
  8937. X-Mailer: ELM [version 2.3 PL11]
  8938.  
  8939. I'd like to announce a new version of the PASCAL frontend I've written
  8940. using the Cocktail compiler tools.
  8941.  
  8942. Major advantages over the previous release:
  8943.   -    documentation of the internals.
  8944.   -    Semantics analysis is complete.
  8945.   -    A full symbol table is generated.
  8946.   -    It now includes a skeleton for Cross referencing and for
  8947.       storage allocation
  8948.  
  8949. Major disadvantage is still:
  8950.   - It doesn't have a backend (yet).
  8951.  
  8952. Sources are available in:
  8953.   ftp.eb.ele.tue.nl:/pub/src/pascal/frontend.zip    (all sources)
  8954.               /pub/src/pascal/frontend.README    (a short intro)
  8955.             /pub/src/pascal/frontdoc.zip    (dvi and ps)
  8956.  
  8957.         Willem Jan Withagen
  8958.  
  8959. Digital Information Systems Group, Room EH 10.35
  8960. Eindhoven University of Technology
  8961. P.O. 513                             Tel: +31-40-473401,Fax: +31-40-448375
  8962. 5600 MB Eindhoven                    The Netherlands
  8963. Internet:  wjw@eb.ele.tue.nl
  8964. X400:      C=nl;ADMD=400net;PRMD=surf;O=tue;OU=ele;OU=eb;S=WJW;
  8965. -- 
  8966. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8967. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8968.  
  8969.  
  8970. From compilers Wed Feb 24 13:09:50 EST 1993
  8971. Newsgroups: comp.compilers
  8972. Path: iecc!compilers-sender
  8973. From: P.G.Hamer@bnr.co.uk (Peter Hamer)
  8974. Subject: looking for SDL grammar
  8975. Message-ID: <93-02-139@comp.compilers>
  8976. Keywords: parse, question
  8977. Sender: compilers-sender@iecc.cambridge.ma.us
  8978. Organization: BNR Europe Ltd, London Road, Harlow, England.
  8979. Date: Wed, 24 Feb 1993 16:29:55 GMT
  8980. Approved: compilers@iecc.cambridge.ma.us
  8981.  
  8982. I'm looking for a grammar for the CCITT language SDL; eg in lex+yacc.
  8983.  
  8984. Does anybody know if this exists in the PD?
  8985.  
  8986. Thanks in advance, Peter
  8987. -- 
  8988. Send compilers articles to compilers@iecc.cambridge.ma.us or
  8989. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  8990.  
  8991.  
  8992. From compilers Wed Feb 24 13:10:25 EST 1993
  8993. Newsgroups: comp.compilers
  8994. Path: iecc!compilers-sender
  8995. From: Andrew Henson <arh@cix.compulink.co.uk>
  8996. Subject: C++ compiler wanted
  8997. Message-ID: <93-02-140@comp.compilers>
  8998. Keywords: C++, question
  8999. Sender: compilers-sender@iecc.cambridge.ma.us
  9000. Reply-To: arh@cix.compulink.co.uk
  9001. Organization: Compilers Central
  9002. Date: Wed, 24 Feb 1993 16:49:00 GMT
  9003. Approved: compilers@iecc.cambridge.ma.us
  9004.  
  9005. I am looking for a C++ compiler that I can port to a new architechture and
  9006. operating system.
  9007.  
  9008. Royalites are negotiable for the successful offer; GNU is unacceptable
  9009. since the modified compiler will be sold.
  9010.  
  9011. Please reply by Email.
  9012.  
  9013. --------------
  9014. Andy Henson;  voice: +44.923.825275;  voicemail: +44.426.910223
  9015. arh@cix.compulink.co.uk; Cix is a mail service: I'm independent.
  9016. -- 
  9017. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9018. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9019.  
  9020.  
  9021. From compilers Wed Feb 24 13:11:08 EST 1993
  9022. Newsgroups: comp.compilers
  9023. Path: iecc!compilers-sender
  9024. From: "Scott Alden" <sa1@beach.cis.ufl.edu>
  9025. Subject: Data Flow Analysis in the presence of recursion.
  9026. Message-ID: <93-02-141@comp.compilers>
  9027. Keywords: dataflow, analysis, question
  9028. Sender: compilers-sender@iecc.cambridge.ma.us
  9029. Organization: Compilers Central
  9030. Date: Wed, 24 Feb 1993 17:16:40 GMT
  9031. Approved: compilers@iecc.cambridge.ma.us
  9032.  
  9033. I am currently looking for information (papers, articles, etc...) on
  9034. interprocedural data flow (flow sensitive and insensitive) analysis,
  9035. particularly under the presence of recursion.
  9036.  
  9037. I am familiar with the work done by Banning, Barth, and Cooper & Kennedy
  9038. but would like to know if any current work has been done on the subject.
  9039. I would appreciate it if anyone can point me in the right direction.
  9040.  
  9041. Sincerely,
  9042. Scott D. Alden
  9043. sa1@thunder.cis.ufl.edu
  9044. -- 
  9045. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9046. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9047.  
  9048.  
  9049. From compilers Thu Feb 25 22:43:21 EST 1993
  9050. Newsgroups: comp.compilers
  9051. Path: iecc!compilers-sender
  9052. From: duck@pembvax1.pembroke.edu
  9053. Subject: EBNF -> BNF Translator Wanted for GTLLGEN.
  9054. Message-ID: <93-02-142@comp.compilers>
  9055. Keywords: EBNF, question, translator
  9056. Sender: compilers-sender@iecc.cambridge.ma.us
  9057. Organization: Pembroke State University
  9058. Date: Wed, 24 Feb 1993 20:09:15 GMT
  9059. Approved: compilers@iecc.cambridge.ma.us
  9060.  
  9061. I am looking for a EBNF to BNF translator such that the output grammar
  9062. will be compatible with a program called GTLLGEN a LL(1-(semi)) based
  9063. table generator.
  9064.  
  9065. Anybody who could point me to .C or .PAS sources I would appreciate it, or
  9066. names of programs that could be found in an Archie search.
  9067.  
  9068. Many thanks,
  9069.  
  9070. - Craig Taylor   - 919-521-3814   All Relevant Disclaimers Apply!!!
  9071.         duck@pembvax1.pembroke.edu (Pembroke State University)
  9072. -- 
  9073. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9074. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9075.  
  9076.  
  9077. From compilers Thu Feb 25 22:44:14 EST 1993
  9078. Newsgroups: comp.compilers
  9079. Path: iecc!compilers-sender
  9080. From: henry@zoo.toronto.edu (Henry Spencer)
  9081. Subject: Re: Effectiveness of compilers today
  9082. Message-ID: <93-02-143@comp.compilers>
  9083. Keywords: optimize, assembler
  9084. Sender: compilers-sender@iecc.cambridge.ma.us
  9085. Organization: U of Toronto Zoology
  9086. References: <93-02-082@comp.compilers> <93-02-116@comp.compilers>
  9087. Date: Wed, 24 Feb 1993 21:59:18 GMT
  9088. Approved: compilers@iecc.cambridge.ma.us
  9089.  
  9090. kanze@us-es.sel.de (James Kanze) writes:
  9091. >... This code sequence is a well known trick regularly
  9092. >used by 8086 assembly programmers 10 years back.  So it should hardly
  9093. >require a super-optimizer to find it...
  9094.  
  9095. That one code sequence is not the only justification for the
  9096. super-optimizer!  Sure, a machine that gets programmed a lot in assembler
  9097. builds up a body of folklore over the years about cute ways of doing
  9098. things.  Sometimes, some of it even gets written down.  The point of the
  9099. super-optimizer is being able to discover these things systematically
  9100. without having to wait five years for the experience to build up
  9101. (especially since assembler programming is getting less common all the
  9102. time).
  9103. --
  9104. Henry Spencer @ U of Toronto Zoology |  henry@zoo.toronto.edu  utzoo!henry
  9105. -- 
  9106. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9107. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9108.  
  9109.  
  9110. From compilers Thu Feb 25 22:44:58 EST 1993
  9111. Newsgroups: comp.compilers
  9112. Path: iecc!compilers-sender
  9113. From: kjones2@andy.bgsu.edu (kevin jones)
  9114. Subject: ANY info on EVA
  9115. Message-ID: <93-02-144@comp.compilers>
  9116. Keywords: vector,question
  9117. Sender: compilers-sender@iecc.cambridge.ma.us
  9118. Organization: Bowling Green State University B.G., Oh.
  9119. Date: Wed, 24 Feb 1993 22:07:17 GMT
  9120. Approved: compilers@iecc.cambridge.ma.us
  9121.  
  9122. I am looking for any information on the compiler EVA - Explicit Vector
  9123. Language.  Has anyone ever heard of this obscure language, let alone
  9124. know where I could find any information on it?
  9125.  
  9126. Please mail me directly
  9127. Kevin Jones   kjones2@andy.bgsu.edu
  9128. -- 
  9129. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9130. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9131.  
  9132.  
  9133. From compilers Thu Feb 25 22:46:06 EST 1993
  9134. Newsgroups: comp.compilers
  9135. Path: iecc!compilers-sender
  9136. From: krishnan@cse.iitb.ernet.in (Krishnan R)
  9137. Subject: Code Generation/Coagulation
  9138. Message-ID: <93-02-145@comp.compilers>
  9139. Keywords: question
  9140. Sender: compilers-sender@iecc.cambridge.ma.us
  9141. Organization: Indian Institute of Technology, Bombay
  9142. Date: Thu, 25 Feb 1993 06:16:39 GMT
  9143. Approved: compilers@iecc.cambridge.ma.us
  9144.  
  9145. There was a paper by Michael Karr on 'Code Generation through
  9146. coagulation'in ACM Sigplan symposium on CC,1984.Has anybody seen an
  9147. implementation ?.Also any more papers on the same issue ?  Also where can
  9148. I get a copy of Carr's full thesis ?
  9149. -- 
  9150. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9151. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9152.  
  9153.  
  9154. From compilers Thu Feb 25 22:46:47 EST 1993
  9155. Newsgroups: comp.compilers
  9156. Path: iecc!compilers-sender
  9157. From: "Juergen Vollmer" <vollmer@karlsruhe.gmd.de>
  9158. Subject: Optimizing parallel programs?
  9159. Message-ID: <93-02-146@comp.compilers>
  9160. Keywords: optimize, parallel, question
  9161. Sender: compilers-sender@iecc.cambridge.ma.us
  9162. Organization: Compilers Central
  9163. Date: Thu, 25 Feb 1993 17:26:47 GMT
  9164. Approved: compilers@iecc.cambridge.ma.us
  9165.  
  9166. Hello
  9167.  
  9168. I'm looking for information about optimization techniques (i.e.  analysis
  9169. and transformation) of explicit parallel (imperative/functional/logical)
  9170. programs.
  9171.  
  9172. The optimization should be able to deal with things like: execution of
  9173. statements in parallel, message passing, shared and distributed memory,
  9174. etc. which are specified explicitly in the source program.
  9175.  
  9176. Any reference is welcome.  Please email to me, I will summarize.
  9177.  
  9178. Juergen Vollmer
  9179. vollmer@karlsruhe.gmd.de
  9180. -- 
  9181. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9182. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9183.  
  9184.  
  9185. From compilers Thu Feb 25 22:47:46 EST 1993
  9186. Newsgroups: comp.compilers
  9187. Path: iecc!compilers-sender
  9188. From: dag.helmfrid@era-t.ericsson.se (Dag Helmfrid)
  9189. Subject: Using gnu C-compiler for signal processors
  9190. Message-ID: <93-02-147@comp.compilers>
  9191. Keywords: GCC, DSP, question, comment
  9192. Sender: compilers-sender@iecc.cambridge.ma.us
  9193. Reply-To: dag.helmfrid@era-t.ericsson.se (Dag Helmfrid)
  9194. Organization: Ericsson
  9195. Date: Thu, 25 Feb 1993 13:29:28 GMT
  9196. Approved: compilers@iecc.cambridge.ma.us
  9197.  
  9198. Hi,
  9199.  
  9200. Has anyone used the gnu C-compiler for a signal processor.  Was is
  9201. possible to get resonable performance of the compiled code? It is
  9202. specially interesting to se how fixpoint nubers are handled. If anyone has
  9203. done this job for the TMS320C5x clones of processors, then a comparison
  9204. with the existing C compilers performance is of interest.
  9205.  
  9206. // Dag Helmfrid
  9207. [I've seen a version of GCC for the Motorola 56K floating around. -John]
  9208. -- 
  9209. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9210. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9211.  
  9212.  
  9213. From compilers Thu Feb 25 22:48:31 EST 1993
  9214. Newsgroups: comp.compilers
  9215. Path: iecc!compilers-sender
  9216. From: midkiff@watson.ibm.com (Samuel Midkiff)
  9217. Subject: re: Data Flow Analysis in the presence of recursion
  9218. Message-ID: <93-02-148@comp.compilers>
  9219. Keywords: dataflow, analysis, question
  9220. Sender: compilers-sender@iecc.cambridge.ma.us
  9221. Organization: Compilers Central
  9222. References: <93-02-141@comp.compilers>
  9223. Date: Thu, 25 Feb 1993 14:01:03 GMT
  9224. Approved: compilers@iecc.cambridge.ma.us
  9225.  
  9226. You might want to look at Luddy Harrison's and David Sehr's PhD theses.
  9227. Harrison's is oriented towards Lisp and Sehr's is oriented towards Prolog.
  9228. Harrison can be reached at harrison@csrd.uiuc.edu; and Sehr can be reached
  9229. at: dsehr@gomez.intel.com.
  9230.  
  9231. Sam Midkiff
  9232. midkiff@watson.ibm.com
  9233. (914) 784-6823
  9234. -- 
  9235. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9236. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9237.  
  9238.  
  9239. From compilers Thu Feb 25 22:49:16 EST 1993
  9240. Newsgroups: comp.compilers
  9241. Path: iecc!compilers-sender
  9242. From: schrod@iti.informatik.th-darmstadt.de (Joachim Schrod)
  9243. Subject: Re: parser-generators for RRPGs: summary
  9244. Message-ID: <93-02-149@comp.compilers>
  9245. Keywords: parse, EBNF
  9246. Sender: compilers-sender@iecc.cambridge.ma.us
  9247. Organization: TH Darmstadt, FG Systemprogrammierung
  9248. References: <93-01-206@comp.compilers> <93-02-125@comp.compilers>
  9249. Date: Thu, 25 Feb 1993 18:52:42 GMT
  9250. Approved: compilers@iecc.cambridge.ma.us
  9251.  
  9252. FYI, three of the named parser generators (the freely distributable ones:
  9253. Cocktail, Eli, and PCCTS) are available by anonymous ftp:
  9254.  
  9255.     ftp.th-darmstadt.de [130.83.55.75]
  9256.     pub/programming/languages/compiler-compiler
  9257.  
  9258. in subdirectories therein. This site is in Germany and therefore
  9259. especially of interest for European users. (The others will note our
  9260. narrow intercontinental bandwidth. ;-)
  9261.  
  9262. Generators which produce C++ code are in a neighbour tree (below
  9263. pub/programming/languages/C++).
  9264.  
  9265. Enjoy.
  9266.  
  9267.     Joachim
  9268. --
  9269. Joachim Schrod            Email: schrod@iti.informatik.th-darmstadt.de
  9270. Computer Science Department
  9271. Technical University of Darmstadt, Germany
  9272. -- 
  9273. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9274. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9275.  
  9276.  
  9277. From compilers Fri Feb 26 19:29:32 EST 1993
  9278. Newsgroups: comp.compilers
  9279. Path: iecc!compilers-sender
  9280. From: Frank Deutschmann <fhd@Panix.Com>
  9281. Subject: Tail recursion in object systems
  9282. Message-ID: <93-02-150@comp.compilers>
  9283. Keywords: OOP, question, optimize
  9284. Sender: compilers-sender@iecc.cambridge.ma.us
  9285. Organization: Compilers Central
  9286. Date: Fri, 26 Feb 1993 05:46:55 GMT
  9287. Approved: compilers@iecc.cambridge.ma.us
  9288.  
  9289. I recently posted the following article to comp.object, but I think it
  9290. would be interesting to see some comp.compilers discussion on the subject.
  9291. The thread began with someone posting an example of two objects with
  9292. mutually tail-recursive methods; the interesting aspect is whether
  9293. tail-recursion optimization can be performed in a message-passing
  9294. environment.
  9295.  
  9296. cjmchale@dsg.cs.tcd.ie (Ciaran McHale) writes:
  9297. > Instead of relying on your system to optimise mutual tail recursion,
  9298. > you might be able to rewrite you code to do:
  9299. > [...example as while loop...]
  9300.  
  9301. Yes, recursive code can always be rewritten, but some problems are
  9302. better expressed (read: more understandable) as recursive.
  9303.  
  9304. > I think you are jumping the gun a bit. Firstly, (unless my site didn't
  9305. > receive some articles) nobody here has argued that such mutual
  9306. > tail-recursion is needed often in practice.
  9307.  
  9308. Tail recursion is more common than you would think -- in C, any
  9309. function call immediately prior to a return can be optimized into a
  9310. jump, with potentially huge performance speedups.  Just take a look at
  9311. some code to see how often function invocations immediately preceede
  9312. returns (and note also that some compilers may be able to re-order
  9313. source statements to optimise to the jump rather than a function
  9314. call).  As you mention in your post, delegation in particular leads to
  9315. tail-recursive functions.
  9316.  
  9317.  
  9318. scottb@saturn.jpl.nasa.gov (Scott Burleigh) writes:
  9319. >I think the problem that this posting brought up is more fundamental than
  9320. >compiler optimization.  It is a problem in the semantics of object-oriented
  9321. >language design.  When we say that a given line of code indicates that "a
  9322. >message is sent to object B" we are kidding ourselves; what is really
  9323. >happening is that a function associated with object B is being called.
  9324.  
  9325. Yes, this is exactly my point with the RPC and migrating objects issue.
  9326. What we are seeing is that method invocation via function call is not the
  9327. same as method invocation via message passing.
  9328.  
  9329. C++ shows this quite clearly; we will get radically different execution
  9330. behavior if (using the standard C++ features) we have two mutually
  9331. tail-recursive objects that are located in the same address space, versus
  9332. the same two objects located in different address spaces.
  9333.  
  9334. In the same address space case, the compiler optimizes out the function
  9335. calls, and the program runs in constant stack space.  But in the remote
  9336. object case, the objects do method invocation via (RPC) message passing,
  9337. and the compiler's tail-recursion optimizations do not help (the call to
  9338. the RPC function is probably a jump, but that doesn't help in the large
  9339. sense).  If we don't have threads, we deadlock immediatly on the recursion
  9340. from object 2 back to object 1 (as object 1's process is blocked waiting
  9341. for the RPC return).  (This is a rather crude, default case of the mutex
  9342. preventing mutual recursion which Ciaran's post mentions.)  If we do have
  9343. threads (and on method invocation/message receipt we create a new thread),
  9344. we create threads and leave them sleeping until we run out of resources
  9345. (effectively, threads have become a substitute for stack frames, but we
  9346. can't optimize this case to run in constant space).
  9347.  
  9348. The cause of the difference in behavior is clearly the dichotomy between
  9349. pure function call versus message passing/handling.  However, after
  9350. thinking about this in more depth, I see no way to make the RPC behave
  9351. like a true function call.
  9352.  
  9353. >I suggest that the solution to the problem is to implement genuine message
  9354. >exchange in place of the ersatz.  When we want object A to send a message
  9355. >to object B, it should SEND A MESSAGE to object B even if by some
  9356. >mischance objects A and B happen to reside in the same address space; A
  9357. >should resist the temptation to muck with B directly, show it some
  9358. >respect, and simply route a message to it through some disinterested third
  9359. >party.
  9360.  
  9361. True, sending messages in all cases is certainly cleaner and more
  9362. consistent (it behaves the same, whether the object is local or remote),
  9363. but, after further investigation, I can not see a clear way to do the
  9364. equavallent optimization for the message passing system.  (In other words,
  9365. I'm at a loss to figure how to get a message passing system, like
  9366. Smalltalk, to execute tail-recursive code in constant space/resources.  If
  9367. Smalltalk is really capable of this optimization, I would be really
  9368. interested to hear about the details!)
  9369.  
  9370. But note that in a message passing system, you will be subject to the RPC
  9371. case, whether your objects are local or not (i.e.: with threads, you
  9372. eventually run out of resources; without threads, you deadlock).  In
  9373. neither case does Stephan get the desired behavior.
  9374.  
  9375. In any case, to do the optimization, I believe it is clear that you need a
  9376. global view of the code -- this optimization can not be implemented in a
  9377. message passing switch/layer -- as you need knowledge of whether the
  9378. message pass is the final job prior to return/reply.
  9379.  
  9380. Just to carry this discussion a little bit further: this says to me that
  9381. OO environments really need be based upon message passing; using function
  9382. invocation to approximate messages is not good enough, as it leads to
  9383. different behavior in different circumstances.  While it is true that
  9384. mutually tail-recursive functions are not the most common things, they do
  9385. exist, and, as systems get larger and we head to more distributed systems
  9386. with object migration support, this issue is likely to become more
  9387. serious.  I would be extreemly interested to learn if it is possible to
  9388. handle tail-recursion in constant space/resources in a message passing
  9389. environment.
  9390.  
  9391. -frank
  9392. --
  9393. EMail: fhd@panix.com, Phone: 1 - 212 / 765 - 2050
  9394. -- 
  9395. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9396. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9397.  
  9398.  
  9399. From compilers Fri Feb 26 23:23:07 EST 1993
  9400. Newsgroups: comp.compilers
  9401. Path: iecc!compilers-sender
  9402. From: loshin@Think.COM (David Loshin)
  9403. Subject: Call for Papers
  9404. Message-ID: <93-02-151@comp.compilers>
  9405. Keywords: parallel, CFP
  9406. Sender: compilers-sender@iecc.cambridge.ma.us
  9407. Organization: Thinking Machines Corporation, Cambridge MA, USA
  9408. Date: Fri, 26 Feb 1993 14:17:16 GMT
  9409. Approved: compilers@iecc.cambridge.ma.us
  9410.  
  9411.                     Call For Papers
  9412.                      in
  9413.     Parallel and Distributed Systems: From Theory to Practice
  9414.                    for the
  9415.               Software Technology Track
  9416.                     of the
  9417.     27th Hawaii International Conference on System Sciences, HICSS-27
  9418.             Maui, Hawaii - January 4-7, 1994
  9419.             ===============================
  9420.  
  9421. This year, the Software Technology Track of HICSS-27 will be exclusively
  9422. focussing on a broad selection of topics in the area of Parallel and
  9423. Distributed Systems: From Theory To Practice. This particular solicitation
  9424. for the Software Track will provide a forum to discuss new advances in
  9425. theory, design, implementation, use, application, and performance
  9426. evaluation of parallel and distributed systems.  Papers are invited that
  9427. may be theoretical, conceptual tutorial or descriptive in nature. Those
  9428. papers selected for presentation will appear in the Conference
  9429. Proceedings.  HICSS-27 is sponsored by the University of Hawaii in
  9430. cooperation with the ACM and the IEEE Computer Society. The Conference
  9431. Proceedings are published by the IEEE Computer Society. A collection of
  9432. the accepted papers will be considered for inclusion in a separately bound
  9433. volume to be determined (publishers and exact dates of publication) at a
  9434. later time.
  9435.  
  9436.  
  9437. 1993 Deadlines
  9438. ==============
  9439. o  A 300-word abstract by March 15
  9440. o  Feedback to author on abstract by April 1
  9441. o  Eight copies of the manuscript by June 4
  9442. o  Notification of accepted papers by August 31
  9443. o  Camera-ready copies of accepted manuscripts are due by October 1
  9444.  
  9445. Software Technology Track Co-Chairs
  9446. ===================================
  9447.  Hesham El-Rewini
  9448.  Department of Mathematics  and Computer Science
  9449.  University of Nebraska at Omaha
  9450.  Omaha, NE 68182
  9451.  rewini@unocss.unomaha.edu
  9452.  (402) 554-2852
  9453.  
  9454.  Ted Lewis
  9455.  Department of Computer Science
  9456.  Oregon State University
  9457.  Corvallis, OR 97331
  9458.  lewis@cs.orst.edu
  9459.  (503) 737-5577
  9460.  
  9461.  Bruce Shriver
  9462.  HICSS-27 Co-Chairman
  9463.  17 Bethea Drive
  9464.  Ossining, NY 10562-1620
  9465.  b.shriver@compmail.com
  9466.  (914) 762-3251
  9467.  
  9468.  
  9469. Software Technology Track Advisory Committee
  9470. ============================================
  9471. o Gul Agha, University of Illinois
  9472. o Dharma Agrawal, North Carolina State University
  9473. o Dennis Allison, HaL Computer Systems & Stanford University
  9474. o Thomas Casavant, University of Iowa
  9475. o Jack Dongarra, University of Tennessee/Oak Ridge National Laboratory
  9476. o Ramez Elmasri, University of Texas at Arlington
  9477. o Hesham El-Rewini, University of Nebraska at Omaha
  9478. o Mike Evangelist, Florida International University
  9479. o John Gustafson, Ames Lab, Iowa State University
  9480. o Ted Lewis, Oregon State University
  9481. o David Padua, University of Illinois
  9482. o Behcet Sarikaya, Bilkent University, Turkey
  9483. o Bruce Shriver, Consultant (on leave from the University of Southwestern
  9484.   Lousiana)
  9485. o Ivan Stojmenovic, University of Ottawa, Canada
  9486.  
  9487.  
  9488. Specific Topics and Minitrack Coordinators
  9489. ==========================================
  9490. Submit your 300-word abstract and then eight copies of the paper to one of
  9491. the following Minitrack Coordinators according to their areas of
  9492. responsibility.  Electronic submissions are encouraged.  Persons interested
  9493. in refereeing in these areas should contact the Minitrack Coordinators
  9494. directly.
  9495.  
  9496.  
  9497. 1) PROGRAM PARTITIONING AND SCHEDULING IN PARALLEL AND DISTRIBUTED SYSTEMS
  9498.  
  9499.    Automatic Partitioning
  9500.    Static/Dynamic Scheduling
  9501.    Task Allocation
  9502.    Load balancing
  9503.    Scheduling
  9504.    Overhead Issues
  9505.    Parallel scheduling algorithms
  9506.    Execution and Communication Cost Estimation
  9507.  
  9508.    COORDITATOR
  9509.    -----------
  9510.    Min-You Wu, wu@cs.buffalo.edu
  9511.    Department of Computer Science
  9512.    State University of New York
  9513.    Buffalo, NY 14260
  9514.  
  9515.  
  9516. 2) TOOLS AND LANGUAGES FOR TRANSPORTABLE PARALLEL APPLICATIONS
  9517.  
  9518.    Parallelism & Transportability
  9519.    Tools/Languages
  9520.    Application Suitability
  9521.    Performance Issues
  9522.    Usability/Expressiveness Tradeoffs
  9523.    Scalability Issues
  9524.    Testing Tools
  9525.    Debuggers
  9526.  
  9527.    COORDITATOR
  9528.    -----------
  9529.    Cherri Pancake, pancake@cs.orst.edu
  9530.    Department of Computer Science
  9531.    Oregon State University
  9532.    Corvallis, OR 97331
  9533.  
  9534.  
  9535. 3) OPERATING SYSTEM SUPPORT FOR MASSIVELY PARALLEL COMPUTER ARCHITECTURE
  9536.  
  9537.    Parallel Operating Systems
  9538.    Distributed Microkernels
  9539.    Dynamically Alterable System Structure
  9540.    High Performance Communication Protocols
  9541.  
  9542.    COORDITATOR
  9543.    -----------
  9544.    Wolfgang Schroeder-Preikschat, wosch@first.gmd.de
  9545.    German National Research Center for Computer Science
  9546.    GMD FIRST
  9547.    Rudower Chaussee 5, D-1199
  9548.    Berlin, Germany
  9549.  
  9550.  
  9551. 4) PARALLEL ALGORITHMS
  9552.  
  9553.    Design and Analysis of Parallel Algorithms in the
  9554.    following areas: Graph Theory, Image Processing,
  9555.    Computational geometry, and Combinatorics, and on
  9556.    the application of these areas in parallel computing.
  9557.  
  9558.    COORDITATORS
  9559.    ------------
  9560.    o Stephan Olariu, olariu@cs.odu.edu
  9561.    o James. L. Schwing, schwing@cs.odu.edu
  9562.    Department of Computer Science
  9563.    Old Dominion University
  9564.    Norfolk, VA 23529-0162
  9565.  
  9566.  
  9567. 5) ISSUES AND PROBLEMS IN COMPILING FOR DISTRIBUTED MEMORY COMPUTER SYSTEMS
  9568.  
  9569.    Networks and Memory Hierarchies
  9570.    Optimal Allocation of Data Objects
  9571.    Optimizing for Locality of Reference
  9572.    Optimization of Communication
  9573.    Vectorization
  9574.    Parallelization
  9575.    Automatic Parallelization of  Dusty Decks
  9576.    Tools for Building Parallel Applications
  9577.    Node-Level Optimizations
  9578.  
  9579.    COORDITATORS
  9580.    ------------
  9581.    o Alex Vasilevsky, alex@think.com
  9582.    o David Loshin, loshin@think.com
  9583.    Thinking Machines Corporation
  9584.    245 First Street
  9585.    Cambridge, Massachusetts 02142
  9586.  
  9587.  
  9588. 6) PROGRAMMING MODELS AND PARADIGMS FOR PARALLEL AND DISTRIBUTED COMPUTING
  9589.  
  9590.    Shared Distributed Memory Model
  9591.    Virtual Shared Memory Model
  9592.    Multi-Threaded Computation Model
  9593.    Virtual Topology Programming Model
  9594.    New programming paradigms
  9595.    Parallel  Languages
  9596.  
  9597.    COORDITATORS
  9598.    ------------
  9599.    o Wolfgang K. Giloi,  w.giloi@compmail.com
  9600.      GMD Center for Innovative Computer Systems
  9601.      Berlin, Germany
  9602.  
  9603.    o Carl Chang, ckchang@eecs.uic.edu
  9604.    o Jon Solworth, solworth@eecs.uic.edu
  9605.    Dept. of EECS
  9606.    University of Illinois at Chicago
  9607.    Chicago, Illinois 60680
  9608.  
  9609.  
  9610. 7) REAL-TIME COMPUTING
  9611.  
  9612.    Assignment of Real-Time Software in Parallel and Distributed Architectures
  9613.    Schedulability Analysis and Performance Prediction Methods
  9614.    Software Engineering Techniques for Construction of Complex Systems
  9615.    Languages
  9616.    Debuggers
  9617.    Compilers
  9618.    Code Generators and Other Tools
  9619.    Integration in Complex Heterogeneous Application Domains
  9620.    Fault-tolerance
  9621.    Dynamic and Adaptive Systems
  9622.    Responsive Systems
  9623.  
  9624.    COORDITATOR
  9625.    -----------
  9626.    Alexander D. Stoyenko, alex@vienna.njit.edu
  9627.    Real-Time Computing Lab
  9628.    Department of Computer & Information Science
  9629.    NJIT, University Heights
  9630.    Newark, NJ 07102.
  9631.  
  9632.  
  9633. 8) PARALLEL & DISTRIBUTED DATABASE SYSTEMS
  9634.  
  9635.    Multidatabase Systems
  9636.    Distributed Database Systems
  9637.    Distributed File Systems
  9638.    Intelligent and Cooperative Information Systems
  9639.    Object-Oriented Design for Large-Scale Database Systems
  9640.  
  9641.    COORDITATORS
  9642.    ------------
  9643.    o M.W. Bright, mikebright@vnet.ibm.com
  9644.      IBM
  9645.      18100 Frederick Pike
  9646.      Gaithersburg, MD 20879
  9647.  
  9648.    o Abdelsalam  Helal, helal@cse.uta.edu
  9649.      Dept. of CSE
  9650.      University of Texas at Arlington
  9651.      Arlington, TX 76019
  9652.  
  9653.    o A.R. Hurson, a2h@ecl.psu.edu
  9654.      Dept. of  ECE
  9655.      The Pennsylvania State University
  9656.      University Park, PA 16802
  9657.  
  9658.  
  9659. Instructions for Submitting Papers
  9660. ==================================
  9661. Manuscripts should be 22-25 typewritten, double-spaced pages in length.
  9662. Please do not send submissions that are significantly shorter or longer
  9663. than this. Papers must not have been previously presented or published,
  9664. nor currently submitted for journal publication.  Each manuscript will be
  9665. subjected to a rigorous refereeing process involving at least five
  9666. reviewers.  Manuscripts should have a title page that includes the title
  9667. of the paper, full name(s) of author(s), affiliation(s), complete postal
  9668. and electronic mail address(es), telephone and FAX number(s), and a
  9669. 300-word abstract of the paper.
  9670. -- 
  9671. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9672. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9673.  
  9674.  
  9675. From compilers Fri Feb 26 23:24:56 EST 1993
  9676. Newsgroups: comp.compilers
  9677. Path: iecc!compilers-sender
  9678. From: parrt@ecn.purdue.edu (Terence J Parr)
  9679. Subject: Re: question to PCCTS users
  9680. Message-ID: <93-02-152@comp.compilers>
  9681. Keywords: PCCTS, tools
  9682. Sender: compilers-sender@iecc.cambridge.ma.us
  9683. Organization: Compilers Central
  9684. References: <93-02-126@comp.compilers>
  9685. Date: Fri, 26 Feb 1993 20:35:53 GMT
  9686. Approved: compilers@iecc.cambridge.ma.us
  9687.  
  9688. Bill Nell (bnell@siemens.com) writes:
  9689.  
  9690. > 1) When compiling antlr with itself I get the following warnings.
  9691. >
  9692. > ../bin/antlr antlr.g
  9693. > Antlr parser generator   Version 1.06   1989-1992
  9694. > antlr.g, line 345: warning: optional path and alt(s) of (..)* ambiguous
  9695. >    upon { "#errclass" }
  9696. [ other messages deleted ]
  9697. >
  9698. > Is this normal?
  9699.  
  9700. Yep.  These ambiguities are handled correctly by ANTLR.  Most arise from
  9701. "ambiguous" productions added to generate good error messages for
  9702. erroneous ANTLR descriptions.
  9703.  
  9704. [ From ANTLR BUGS100 file: ]
  9705. > > Be aware that switching between input streams will not work because
  9706. > > characters are lost when switching to a new stream.
  9707.  
  9708. > My questions are: Do multiple parsers/multiple parser invocations work
  9709. > now?  And, I am confused about the last line in the last paragraph.  To me
  9710. > it basically means that a PCCTS lexer/parser would not be able to handle
  9711. > things like #include files, where you would have to switch the input
  9712. > buffer to read from a new file.
  9713.  
  9714. 1.06 PCCTS does indeed drop characters when you switch input streams and
  9715. then try to switch back; specifically, the lookahead char used by the DLG
  9716. automaton is not saved (lost).  To solve this, we have created DLG save
  9717. and restore state functions and an example that uses these functions to
  9718. handle nested #include statements.
  9719.  
  9720. Files dlgdef.h.fix and dlgauto.h.fix are available from the ftp site or
  9721. the mailserver to replace your existing dlgdef.h and dlgauto.h files.  The
  9722. example is in file nesting.g.  Contact pccts@ecn.purdue.edu with a
  9723. Subject: line of
  9724.  
  9725. Subject: email file
  9726.  
  9727. where 'file' is one of dlgdef.h.fix, dlgauto.h.fix, nesting.g to obtain
  9728. these files.
  9729.  
  9730. The ftp site, marvin.ecn.purdue.edu [128.46.179.151] in directory
  9731. pub/pccts, has the files as well.
  9732.  
  9733. Terence Parr
  9734. Will Cohen
  9735. Purdue Electrical Engineering
  9736. -- 
  9737. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9738. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9739.  
  9740.  
  9741. From compilers Fri Feb 26 23:25:25 EST 1993
  9742. Newsgroups: comp.compilers
  9743. Path: iecc!compilers-sender
  9744. From: preston@dawn.cs.rice.edu (Preston Briggs)
  9745. Subject: Re: Code Generation/Coagulation
  9746. Message-ID: <93-02-153@comp.compilers>
  9747. Keywords: code, bibliography
  9748. Sender: compilers-sender@iecc.cambridge.ma.us
  9749. Organization: Rice University, Houston
  9750. References: <93-02-145@comp.compilers>
  9751. Date: Fri, 26 Feb 1993 20:46:24 GMT
  9752. Approved: compilers@iecc.cambridge.ma.us
  9753.  
  9754. krishnan@cse.iitb.ernet.in (Krishnan R) writes:
  9755.  
  9756. >There was a paper by Michael Karr on 'Code Generation through
  9757. >coagulation'in ACM Sigplan symposium on CC, 1984.  Has anybody seen an
  9758. >implementation?  Also any more papers on the same issue?  Also where
  9759. >can I get a copy of Karr's full thesis ?
  9760.  
  9761. There's a later paper that describes an experimental implementation.
  9762.  
  9763.   author="W. G. Morris",
  9764.   title="{{\small CCG}}: A Prototype Coagulating Code Generator",
  9765.   pages="45--58",
  9766.   journal=sigplan,
  9767.   year=1991,
  9768.   month=jun,
  9769.   volume=26,
  9770.   number=6,
  9771.   note=pldi91
  9772.  
  9773. For Karr's thesis, I'd check with University Microfilms or perhaps
  9774. write Harvard.
  9775.  
  9776. Preston Briggs
  9777. -- 
  9778. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9779. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9780.  
  9781.  
  9782. From compilers Fri Feb 26 23:27:04 EST 1993
  9783. Newsgroups: comp.compilers
  9784. Path: iecc!compilers-sender
  9785. From: Hermano Moura <moura@dcs.glasgow.ac.uk>
  9786. Subject: Operational Semantics and Compiler Generation.
  9787. Message-ID: <93-02-154@comp.compilers>
  9788. Keywords: semantics, question
  9789. Sender: compilers-sender@iecc.cambridge.ma.us
  9790. Organization: Compilers Central
  9791. Date: Fri, 26 Feb 1993 18:51:50 GMT
  9792. Approved: compilers@iecc.cambridge.ma.us
  9793.  
  9794. Could someone give some references regarding the use of [structural]
  9795. operational semantics for [semantics-directed] compiler generation?
  9796. Pointers to papers, systems, groups, etc are welcome. (Answers by e-mail
  9797. is preferable; I will summarize to this group if there is enough
  9798. interest.)
  9799.  
  9800. Many thanks,
  9801.  
  9802. -- Hermano Moura
  9803.    Computing Science
  9804.    Glasgow University
  9805. -- 
  9806. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9807. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9808.  
  9809.  
  9810. From compilers Fri Feb 26 23:29:02 EST 1993
  9811. Newsgroups: comp.compilers
  9812. Path: iecc!compilers-sender
  9813. From: solworth@newyork.eecs.uic.edu (Jon Solworth)
  9814. Subject: CFP: ISCA workshop on parallel coordination, San Diego, May 1993
  9815. Message-ID: <93-02-155@comp.compilers>
  9816. Keywords: parallel, CFP
  9817. Sender: compilers-sender@iecc.cambridge.ma.us
  9818. Organization: EECS Dept, Univ. of Illinois at Chicago
  9819. Date: Sat, 27 Feb 1993 00:45:48 GMT
  9820. Approved: compilers@iecc.cambridge.ma.us
  9821.  
  9822.  
  9823. Call for papers and participation . . .
  9824.  
  9825.     Workshop on Fine-Grain Massively Parallel Coordination
  9826.          Intl. Symp. on Computer Architecture
  9827.             San Diego, California
  9828.                May 14-15, 1993
  9829.  
  9830. ABSTRACT
  9831. ========
  9832.  
  9833.     Parallel computing consists of alternating independent computation
  9834. (on individual processors) and coordination among processors; it is the
  9835. coordination which distinguishes parallel from uniprocessor operation.
  9836. Coordination includes synchronization, communication, scheduling, and
  9837. resource management.  Efficient coordination is critical to exploiting
  9838. fine- or even medium-grain concurrency and effects performance, static vs.
  9839. dynamic tradeoffs, degree of asynchrony, and many other aspects of
  9840. parallel processor implementation and semantics.
  9841.  
  9842.     There is a growing trend towards using sequential microprocessors
  9843. as a base for parallel machines.
  9844.  
  9845.      .  As context switching time increases, how can processors be
  9846.     coordinated efficiently?  Does this condemn us to
  9847.     coarse-grain machines, or can groups of processors be scheduled to
  9848.     minimize context switching?  Are fine-grain architectures only
  9849.     achievable with custom processor hardware?  Are there fundamental
  9850.     tradeoffs between coordination efficiency and sequential processing
  9851.     efficiency?
  9852.  
  9853.      .    What are a sufficient set of coordination mechanisms, and how can
  9854.     they be implemented in the network or memory (including caches)?
  9855.     How can these implementations compensate for the lack of fine-grain
  9856.     parallelism support at the processor level?
  9857.     What are the tradeoffs of properties such as virtualizability and
  9858.     fault tolerance versus hardware cost, scalability, and efficiency?
  9859.     What properties should be guaranteed by the software system
  9860.     versus the architecture?
  9861.  
  9862.      .    What is the impact of compile-time analysis on coordination,
  9863.     including scheduling and resource allocation?
  9864.  
  9865.  
  9866.  
  9867. IMPORTANT DATES:
  9868. ================
  9869.     Papers due:  March 22, 1993
  9870.     Acceptances: April 8,  1993
  9871.     Final papers: May 1, 1993
  9872.  
  9873. ORGANIZERS:
  9874. ===========
  9875.     Jon A. Solworth (Chair), University of Illinois at Chicago
  9876.     Andrew Chien, University of Illinois at Urbana-Champaign
  9877.     Gary Koob, Office of Naval Research
  9878.  
  9879. LOCAL ARRANGEMENTS
  9880. ==================
  9881.     Jerry Stamatopolous, isca-ws@parsys.eecs.uic.edu
  9882.  
  9883. SUBMISSIONS:
  9884. ============
  9885.     If you are interested in submitting to the workshop send
  9886.     5 copies of a three-page (single spaced) abstract to the chair.
  9887.     Abstracts can discuss RESEARCH RESULTS or POSITION PAPERS,
  9888.     although we expect expect the balance of accepted papers to
  9889.     be weighted towards research contributions.
  9890.     Submit by sending postscript or plain text electronically to:
  9891.  
  9892.         isca-ws@parsys.eecs.uic.edu
  9893.  
  9894.     If this is a hardship, then papers may be sent by physical mail
  9895.     arriving by the due date to:
  9896.  
  9897.         Jon A. Solworth
  9898.         Dept. of EECS (M/C 154)
  9899.         University of Illinois at Chicago
  9900.         851 S. Morgan Rm 1120 SEO
  9901.         Chicago, IL 60607-7053
  9902.  
  9903.         FAX:       (312) 413-0024
  9904.              telephone: (312) 996-0955
  9905.  
  9906.     Submissions must include an email address and a telephone number.
  9907.     Acceptances will be made by email, posted to the network, and
  9908.     available by anonymous ftp from the directory
  9909.     parsys.eecs.uic.edu:pub/isca-ws.
  9910.  
  9911.  
  9912. WORKSHOP INFORMATION
  9913. ====================
  9914.  
  9915. The workshop will be in San Diego, California, USA, May 14-15, as part
  9916. of the International Symposium on Computer Architecture at the
  9917. Federated Computing Research Conference (FCRC).  There will be a
  9918. registration fee, of between $150--$200.  Please send e-mail to
  9919. isca-ws@parsys.eecs.uic.edu if you want to be on our mailing list.
  9920.  
  9921.  
  9922. THE FEDERATED COMPUTING RESEARCH CONFERENCE
  9923. ===========================================
  9924.  
  9925. The Federated Computing Research Conference (FCRC) will run from May 14 to
  9926. May 22 in San Diego, California, USA.  The FCRC is an effort to bring
  9927. together a spectrum of individual computing research conferences and
  9928. workshops at a common site and at roughly the same time.  In addition,
  9929. mornings will begin with joint plenary talks on topics of broad appeal to
  9930. the computing research community.  The plenary speakers will include:
  9931. Laszlo Babai, Richard Karp, Guy L.  Steele, Jr., and Maurice Wilkes.  The
  9932. FCRC constituent conferences are the:
  9933.  
  9934.  *  25th Annual ACM Symposium on Theory of Computing (STOC), May 16-18
  9935.  *  20th Annual Int'l Symposium on Computer Architecture (ISCA), May 17-19
  9936.  *  9th Annual ACM Symposium on Computational Geometry, May 19-21
  9937.  *  Structure in Complexity Theory, 8th Annual IEEE Conference
  9938.         (Structures), May 18-21
  9939.  *  7th Workshop on Parallel and Distributed Simulation (PADS), May 16-19
  9940.  *  4th ACM SIGPLAN Symposium on Principles and Practices of Parallel
  9941.         Programming (PPoPP), May 19-21
  9942.  *  3rd Workshop on Parallel Algorithms (WOPA), May 19-20
  9943.  *  ACM/ONR Workshop on Parallel and Distributed Debugging, May 17-18
  9944.  *  CRA Workshop on Academic Careers for Women, May 15
  9945.  
  9946.  
  9947. SPONSORS of FCRC
  9948. ================
  9949.  
  9950. The Federated Computing Research Conference (FCRC) is sponsored by the
  9951. Computing Research Association, ACM (with the following SIGs: SIGACT,
  9952. SIGARCH, SIGGRAPH, SIGOPS, SIGPLAN, SIGSIM), IEEE (with the following
  9953. Computer Science Technical Committees: Mathematical Foundations of
  9954. Computing, Computing Architecture, Simulation), University of Maryland
  9955. Institute for Advanced Computer Studies, DARPA, NSF, and ONR.
  9956. --
  9957. Jon A. Solworth                 internet:  solworth@parsys.eecs.uic.edu
  9958. Dept. of EECS (M/C 154)             telephone: (312) 996-0955
  9959. University of Illinois at Chicago       FAX:       (312) 413-0024
  9960. 851 S. Morgan Rm 1120 SEO
  9961. Chicago, IL 60607-7053
  9962. -- 
  9963. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9964. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9965.  
  9966.  
  9967. From compilers Sat Feb 27 21:55:13 EST 1993
  9968. Newsgroups: comp.compilers
  9969. Path: iecc!compilers-sender
  9970. From: mac@coos.dartmouth.edu (Milton A. Colvin)
  9971. Subject: Re: Tail recursion in object systems
  9972. Message-ID: <93-02-156@comp.compilers>
  9973. Keywords: OOP, optimize
  9974. Sender: compilers-sender@iecc.cambridge.ma.us
  9975. Organization: Dartmouth College, Hanover, NH
  9976. References: <93-02-150@comp.compilers>
  9977. Date: Sat, 27 Feb 1993 17:11:43 GMT
  9978. Approved: compilers@iecc.cambridge.ma.us
  9979.  
  9980. A note on this subject: the Mentat large-grain dataflow system implemented
  9981. message passing RPC, but by something like continuation passing. The
  9982. sender passes a forwarding address for the result, not necessarily back to
  9983. the sender.  This allows tail-recursion optimization.
  9984. -- 
  9985. Send compilers articles to compilers@iecc.cambridge.ma.us or
  9986. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  9987.  
  9988.  
  9989. From compilers Sun Feb 28 11:37:27 EST 1993
  9990. Xref: iecc comp.compilers:4327 misc.jobs.offered:24450
  9991. Newsgroups: comp.compilers,misc.jobs.offered
  9992. Path: iecc!compilers-sender
  9993. From: compilers-jobs@iecc.cambridge.ma.us
  9994. Subject: Compiler positions available for week ending February 28
  9995. Message-ID: <93-02-157@comp.compilers>
  9996. Keywords: jobs
  9997. Sender: compilers-sender@iecc.cambridge.ma.us
  9998. Organization: Compilers Central
  9999. Date: Sun, 28 Feb 1993 13:00:01 GMT
  10000. Approved: compilers@iecc.cambridge.ma.us
  10001.  
  10002. This is a digest of ``help wanted'' and ``position available'' messages
  10003. received at comp.compilers during the preceding week.  Messages must
  10004. advertise a position having something to do with compilers and must also
  10005. conform to the guidelines periodically posted in misc.jobs.offered.  To
  10006. respond to a job offer, send mail to the author of the message.  To submit
  10007. a message, mail it to compilers@iecc.cambridge.ma.us.
  10008.  
  10009.  
  10010. -------------------------------
  10011.  
  10012. From: hastings@pure.com (Reed Hastings)
  10013. Subject: Code Generation, Back End Optimization, Pure Software, Sunnyvale, CA
  10014. Organization: Pure Software Inc.
  10015. Date: Mon, 22 Feb 1993 15:47:38 GMT
  10016.  
  10017. Pure Software is looking for a talented engineer to design and implement
  10018. difficult instruction-level manipulations of existing object code.  The
  10019. successful candidate will be responsible for the future of Pure's Object
  10020. Code Insertion technology.
  10021.  
  10022. The ideal candidate will:
  10023.  
  10024.  o   have developed language implementation products;
  10025.  o   understand the complexity of Object Code Insertion;
  10026.  o   know several instruction sets;
  10027.  o   have 2 to 6 years of experience and a MSCS from a top university;
  10028.  o   possess excellent references;
  10029.  o   know SUNOS/SOLARIS inside out;
  10030.  o   desire a challenge and major rewards.
  10031.  
  10032. Pure Software's revolutionary Purify product transforms existing programs
  10033. at the object level introducing expanded error detection capabilities and
  10034. other features.  This product, and its derivatives, will be responsible for
  10035. a major increase in software reliability in the 90's.  As a startup, the
  10036. Company offers significant equity packages, and expects significant
  10037. commitment.
  10038.  
  10039. Our customers are the brightest development and testing engineers.  They
  10040. work on large cutting-edge applications on Sun workstations.  The primary
  10041. requirement is that you understand what the problems our customers are
  10042. facing, and want to help solve them.
  10043.  
  10044. Fax your resume and cover letter to 408.720.9200
  10045. attention Reed Hastings
  10046.  
  10047. -------------------------------
  10048.  
  10049. Organization: Scientific Placement, Inc.
  10050. From: KJS@spi.com (Karl Skadowski)
  10051. Date: Wed, 24 Feb 1993 17:34:30 CST
  10052. Subject: COMPILER R&D - ILLINOIS
  10053.  
  10054. Job Title & Location
  10055.  
  10056. COMPILER R&D - ILLINOIS
  10057. Real-world-experienced compiler pukes wanted.
  10058. Have 2 possibilities, heavy compiler r&d to be creative code writer,  and
  10059. another with business acumen to be a product manager.  If you don't have
  10060. product manager experience and don't know what that is, apply for the other
  10061. position.
  10062.  
  10063. Don't have real-world experience, only academia with a PhD???
  10064. Maybe. Let's see the bulk of your resume and we'll chat.
  10065.  Immigration status: You must be a U.S. or Canadian Citizen or have a
  10066. Permanent Residence Visa.
  10067.  
  10068. Please send a resume in plain text format via email to:
  10069.  
  10070. Karl Skadowski
  10071. Scientific Placement, Inc., Box 19949, Houston, TX 77224
  10072. 713-496-6100  Fax: 713-496-6802
  10073. Internet: kjs@scientific.com; Compuserve: 71250,3001; AppleLink: D1580
  10074.  
  10075. Formats: Ascii text via Email preferred. Macintosh or PC Word processor
  10076. formats are OK via Email (binhex). Please do not send LaTex or
  10077. Postscript.Fax is discouraged unless Fine Setting on your fax machine is
  10078. used (to enable OCR scanning). US Mail on 3.5 inch diskette is OK too.
  10079.  
  10080. -------------------------------
  10081.  
  10082. From: arnold@nic.cerf.net (Arnold Garlick)
  10083. Subject: Sr. Programmer/Analyst/Compilers/Colorado (Recruiter)
  10084. Date: 25 Feb 1993 20:14:04 GMT
  10085.  
  10086.                      SENIOR PROGRAMMER/ANALYST, COMPILERS
  10087.                                 (Colorado)
  10088.  
  10089. Technical design, implementation, development, and support of state-of-
  10090. the-art optimizing compilers for a supercomputer system.  Applicants
  10091. should have a strong background in compiler optimization techniques and
  10092. theory (particularly those related to scientific applications) and proven
  10093. vendor software development experience in one or more of:  scalar
  10094. optimization, automatic vectorization and parallelization, and
  10095. interprocedural optimization.  Solid ANSI C and Fortran programming
  10096. experience is essential.  Experience in RISC or parallel machine
  10097. architectures and the ability to work efficiently in an innovative small
  10098. team environment is highly desirable.
  10099.  
  10100.     ** Minimum 3 years on-the-job experience required **
  10101.              No new or recent graduates, please!
  10102.  
  10103.     US or Canadian Citizenship required, or US Permanent
  10104. Residency.  We are unable to assist persons requiring H-1 or  F-1 Visas.
  10105.  
  10106. Please respond directly to Arnold Garlick, President, Pacific Search,
  10107. 2377 S. El Camino Real, Suite 201, San Clemente, CA 92672
  10108. E Mail:  arnold@cerf.net (ASCII files only please)  Fax:  (714) 366-9200.
  10109. Refer to Position #1359
  10110.  
  10111. -------------------------------
  10112.  
  10113. From: arnold@nic.cerf.net (Arnold Garlick)
  10114. Subject: Director of Languages/SW Engineering Management (Silicon Valley) (Recruiter)
  10115. Date: 25 Feb 1993 20:26:21 GMT
  10116.  
  10117.                              DIRECTOR OF LANGUAGES
  10118.                                (Silicon Valley)
  10119.  
  10120. Current opportunity for a Director of Languages to head a compiler group
  10121. of roughly 14 people (currently staffed at 10).  Compiler group is
  10122. aggressively pushing technology in parallelizing compilers and in
  10123. programming environment technology.  While management ability is the
  10124. fundamental requirement, the successful candidate must be at least
  10125. technically conversant in these areas.  Also required is the ability to
  10126. deal with a leading edge, fluid, loosely- structured technical and
  10127. management environment.  Job requirements include a Masters degree in
  10128. Computer Science (PhD preferred) 5 years or more experience in a technical
  10129. implementation positions, and 3 years of more management experience.
  10130. Knowledge of or implementation experience in restructuring compilers is a
  10131. definite plus, as is knowledge of RISC architectures (particularly DEC's
  10132. alpha architecture).  Job responsibilities include management of the
  10133. compiler group, setting technical direction, budgeting and review
  10134. responsibility, and hiring.
  10135.     ** Minimum 5 years on-the-job experience required **
  10136.              No new or recent graduates, please!
  10137.  
  10138.     US or Canadian Citizenship required, or US Permanent
  10139. Residency.  We are unable to assist persons requiring H-1 or  F-1 Visas.
  10140.  
  10141. Please respond directly to Arnold Garlick, President, Pacific Search,
  10142. 2377 S. El Camino Real, Suite 201, San Clemente, CA 92672
  10143. E Mail:  arnold@cerf.net (ASCII files only please)  Fax:  (714) 366-9200.
  10144. Please refer to position #1372
  10145.  
  10146. -------------------------------
  10147.  
  10148. From: arnold@nic.cerf.net (Arnold Garlick)
  10149. Subject: Manager of Sustaining Engineering/Compiler Development (Silicon VAlley) (Recruiter)
  10150. Date: 25 Feb 1993 20:28:34 GMT
  10151.  
  10152.                        MANAGER OF SUSTAINING ENGINEERING
  10153.                              (Silicon Valley)
  10154.  
  10155. Current opportunity for a person to manage sustained engineering on a
  10156. highly advanced automatic restructuring compiler.  Transformations that
  10157. are currently included in the compiler include advanced dependence
  10158. analysis, loop interchange, limited interprocedural analysis, scalar
  10159. replacement, loop distribution, parallelization, and vectorization.  The
  10160. person in this job will be responsible for managing a small group whose
  10161. charter is to support and extend the functionality of this compiler.  A
  10162. B.S. in Computer Science is required, with a Masters (preferably focused
  10163. in compiler construction) being highly desirable.  Five or more years of
  10164. implementation experience is also a requirement.  Some managerial
  10165. experience is a plus, but is not a necessity; this job can be viewed as an
  10166. introductory step into management.  Experience with advanced restructuring
  10167. compilers is also a plus, as is experience with RISC architectures and
  10168. parallel machines.
  10169.  
  10170. This job is technical management, with the emphasis on technical.  The
  10171. management overhead is expected to be low (roughly 25% of the job's time),
  10172. so that technical implementation will be an important part of the job.
  10173. The job can be viewed as either an introductory step into management, for
  10174. a highly technical person desiring management responsibility, and a chance
  10175. to learn the technical details of restructuring compilers, for a person
  10176. with management experience.
  10177.  
  10178.     ** Minimum 5 years on-the-job experience required **
  10179.              No new or recent graduates, please!
  10180.  
  10181.     US or Canadian Citizenship required, or US Permanent
  10182. Residency.  We are unable to assist persons requiring H-1 or  F-1 Visas.
  10183.  
  10184. Please respond directly to Arnold Garlick, President, Pacific Search,
  10185. 2377 S. El Camino Real, Suite 201, San Clemente, CA 92672
  10186. E Mail:  arnold@cerf.net (ASCII files only please)  Fax:  (714) 366-9200.
  10187. Please refer to position #1373
  10188.  
  10189. -------------------------------
  10190.  
  10191. From: arnold@nic.cerf.net (Arnold Garlick)
  10192. Subject: Dependence Analysis/Parallel Programming Environment (Silicon Valley) (Recruiter)
  10193. Date: 25 Feb 1993 20:30:37 GMT
  10194.  
  10195.             DEPENDENCE ANALYSIS/PARALLEL PROGRAMMING ENVIRONMENT
  10196.                               (Silicon Valley)
  10197.  
  10198. Career opportunity for a technical lead to be responsible for the
  10199. dependence analysis related phases of a parallel programming environment.
  10200. This person will be responsible for designing the dependence analysis
  10201. phases of an advanced interactive programming environment targeted towards
  10202. using interprocedural analysis and other advanced analysis to generate
  10203. highly optimized code, with an emphasis on multiple CPU parallelism.  This
  10204. person will also be responsible for heading up the implementation effort
  10205. as well.  Much of the base functionality can be drawn from an existing
  10206. restructuring compiler, so that the project does not need to start from
  10207. scratch.
  10208. A PhD in Computer Science with an emphasis on dependence analysis and
  10209. parallelism is required.  Industrial implementation experience and
  10210. experience with interactive parallel programming tools is a definite plus.
  10211. This project is an attempt to produce a product out of advanced
  10212. technology/ research-level information, so experience in transforming
  10213. research tools into production-level tools is also an advantage.
  10214.  
  10215.     ** Minimum 3 years on-the-job experience required **
  10216.              No new or recent graduates, please!
  10217.  
  10218.     US or Canadian Citizenship required, or US Permanent
  10219. Residency.  We are unable to assist persons requiring H-1 or  F-1 Visas.
  10220.  
  10221. Please respond directly to Arnold Garlick, President, Pacific Search,
  10222. 2377 S. El Camino Real, Suite 201, San Clemente, CA 92672
  10223. E Mail:  arnold@cerf.net (ASCII files only please)  Fax:  (714) 366-9200.
  10224. Please refer to position #1374
  10225.  
  10226. -------------------------------
  10227.  
  10228. From: arnold@nic.cerf.net (Arnold Garlick)
  10229. Subject: Compiler Development/Code Optimization, SF Bay Area (Recruiter)
  10230. Date: 25 Feb 1993 20:22:20 GMT
  10231.  
  10232.         SENIOR SOFTWARE ENGINEER - COMPILERS
  10233.             (San Francisco Bay Area)
  10234.  
  10235. Compiler development position emphasizing code optimization, instruction
  10236. scheduling and middle path bridges to intermediate languages.  Company
  10237. develops advanced RISC-based workstations which employ multiprocessing
  10238. architecture.  Operating system background should be in MS-DOS.
  10239.  
  10240.     ** Minimum 3 years on-the-job experience required **
  10241.              No new or recent graduates, please!
  10242.  
  10243.     US or Canadian Citizenship required, or US Permanent
  10244. Residency.  We are unable to assist persons requiring H-1 or  F-1 Visas.
  10245.  
  10246. Please respond directly to Arnold Garlick, President, Pacific Search,
  10247. 2377 S. El Camino Real, Suite 201, San Clemente, CA 92672
  10248. E Mail:  arnold@cerf.net (ASCII files only please)  Fax:  (714) 366-9200.
  10249. Please refer to Position #1200
  10250.  
  10251. -------------------------------
  10252.  
  10253. From: arnold@nic.cerf.net (Arnold Garlick)
  10254. Subject: Senior Programmer/Analyst-Compiler Development (Backend) (Colorado) (Recruiter)
  10255. Date: 25 Feb 1993 20:18:16 GMT
  10256.  
  10257.             SENIOR PROGRAMMER/ANALYST - COMPILER DEVELOPMENT (BACKEND)
  10258.                                   (Colorado)
  10259.  
  10260. Technical design, development, implementation and support of
  10261. state-of-the-art optimizing compilers for an advanced, very high speed
  10262. supercomputer system.  Should have a strong background in compiler
  10263. back-end design and implementation, and proven vendor software development
  10264. experience in code generation, instruction scheduling and register
  10265. assignment for vector of RISC architectures.  Solid ANSI C and Fortran
  10266. programming experience and the ability to work efficiently in an
  10267. innovative small-team environment is essential.  Experience in parallel
  10268. machine architectures is highly desirable.  Key requirement for position
  10269. are:
  10270.  
  10271. Must be a good, thorough programmer.  MS-level (or higher preferred)
  10272. degree, with a minimum of 2 years experience in vendor-supplied compiler
  10273. development.  (Cray,vector and RISC architectures are a plus.)  Good C and
  10274. Fortran 77 programming experience (Pascal, Fortran 90 and assembly
  10275. experience are a plus.)  (The reason for this is that existing compilers
  10276. are written in a combination of Pascal, C and Cray assembler, and the
  10277. objective is to write the new compilers in C and Cray assembler.  The two
  10278. source langauges processed by the compilers are C and Fortran ... will be
  10279. trashing the Pascal compiler.  Future languages are Fortran '90 and C++,
  10280. with no immediate plans or need to process those languages are yet.)
  10281.  
  10282.     ** Minimum 2 years on-the-job experience required **
  10283.              No new or recent graduates, please!
  10284.  
  10285.     US or Canadian Citizenship required, or US Permanent
  10286. Residency.  We are unable to assist persons requiring H-1 or  F-1 Visas.
  10287.  
  10288. Please respond directly to Arnold Garlick, President, Pacific Search,
  10289. 2377 S. El Camino Real, Suite 201, San Clemente, CA 92672
  10290. E Mail:  arnold@cerf.net (ASCII files only please)  Fax:  (714) 366-9200.
  10291. Please refer to position #1364
  10292. -- 
  10293. Send compilers articles to compilers@iecc.cambridge.ma.us or
  10294. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  10295.  
  10296.