Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!news.glorb.com!news.ripco.com!rahul.net!wasp.rahul.net!rahul.net!news.misty.com!news.iecc.com!nerds-end From: BGB Newsgroups: comp.compilers Subject: Re: How to handle qualified identifiers such as x.y in a Pascal-like language Date: Sun, 03 Jul 2011 13:14:35 -0700 Organization: albasani.net Lines: 58 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <11-07-011@comp.compilers> References: <11-06-037@comp.compilers> <11-06-039@comp.compilers> <11-06-045@comp.compilers> <11-07-004@comp.compilers> <11-07-008@comp.compilers> NNTP-Posting-Host: news.iecc.com X-Trace: gal.iecc.com 1310011328 20045 64.57.183.58 (7 Jul 2011 04:02:08 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Thu, 7 Jul 2011 04:02:08 +0000 (UTC) Keywords: symbols, design, comment Posted-Date: 07 Jul 2011 00:02:08 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: x330-a1.tempe.blueboxinc.net comp.compilers:187 On 7/2/2011 10:13 AM, Anton Ertl wrote: > BGB writes: >> I am still left to much wish Linux/... had adopted the Win64 ABI >> instead > > That would have been quite an achievement, because the Windows x64 ABI > came out quite some time after Linux and others adopted the SysV ABI, > so it would have required looking into the future. > an idle wish doesn't need to be within the realm of "could have actually happened...". I am half still considering of using a custom calling-convention for internal calls. I decided to leave out a more detailed description of the considered register assignments, argument passing, ... and if/when I would do something like this is uncertain. I guess it is mostly just the annoyance that SysV is sufficiently complex that none of my reflective-call stuff interacting with it can do so particularly efficiently or correctly (lots of nasty cruft here). also, it seems to interact badly with my C coding practices in general. I suspect to work well, SysV/AMD64 expects functions accepting lots of arguments and with most of the execution/computation being in leaf functions. coding practices where most of the computation is in non-leaf functions and leaf-functions are generally short/trivial (such as performing a simple operation or returning a status value), ... seem to not be the ideal use-case. all this seems to lead to my code generally performing somewhat better on 32-bit x86 systems and on Win64. for example, my assembler seems to run about 2x slower on 64-bit Linux than on 64-bit Windows in my tests, ... I don't imagine my coding practices are all that novel though. however, other people have benchmarked other programs, and it seems many types of programs (apparently especially data-compression and encryption programs) seem to perform better on Linux x86-64 than on Win64 or on 32-bit systems. it generally seems to be the reverse for larger programs though (web browsers, games, office-type apps, ...) which seem to generally perform better on 32-bit systems and on Windows. granted, I can't claim any objectivity here, given my personal dislike (in general) of the SysV/AMD64 ABI... [It is my impression that a lot of languages that allow closures and the like end up with their own calling sequences. -John]