From: Greg King (gngking_at_erols.com)
Date: 2002-02-22 08:59:24
-----Original Message----- From: Ullrich von Bassewitz <uz_at_musoftware.de> To: cc65_at_musoftware.de <cc65_at_musoftware.de> Date: Thursday, February 14, 2002 10:39 AM Subject: Re: [cc65] dummy questions... >On Thu, Feb 14, 2002 at 04:22:22PM +0100, groepaz wrote: >> ... >> - just to make sure I got this right, the compiler DOES support >> struct-assignment, but passing structs to functions and/or returning >> them does NOT work -- right? > >Yes. Returning-structs-from-functions and passing-structs-by-value would >require larger changes to the compiler, and is often not very useful (because >of the copying overhead). But, adding struct-assignment was rather easy, and is >more useful than the other struct operations, so it was added. The compiler could look at the size of the struct; if it is not larger than an int or a long int, then cc65 could generate code to pass/receive that structure, as though it were one of those (single) data-types. That method would allow you to add the div() function to the library. Actually, we can trick the current version of cc65 into using that function: typedef struct { int rem, quot; } div_t; extern div_t fastcall div(int numer, int denom); ... int dividend, divisor; div_t result; ... (long)result = (long)div(dividend, divisor); /* The test (result.quot * divisor + result.rem == dividend) is true. */ ---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo_at_musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2002-02-22 08:59:56 CET