home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.c      Meh, in C you gotta define EVERYTHING      243,242 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 242,488 of 243,242   
   bart to David Brown   
   Re: 8 bit cpu   
   19 Dec 25 13:43:20   
   
   From: bc@freeuk.com   
      
   On 19/12/2025 08:19, David Brown wrote:   
   > On 18/12/2025 19:20, Rosario19 wrote:   
   >> 8 bit cpu for access memory other than 0..255 location has need at   
   >> last one 16 bit register and 16 bits operations, so i think that even   
   >> a 8 bit cpu has to have int in C language as 16 bits   
   >   
   > No, 8-bit cpus don't need 16-bit registers or 16-bit operations.  8-bit   
   > cpus typically only have 8-bit general registers (though most will have   
   > a 16-bit PC register).  Some will allow you to use a couple of 8-bit   
   > registers in a pair, primarily for memory addressing, but a pair of 8-   
   > bit registers is not the same as a 16-bit register.   
      
   >   
   > The C requirement for a minimum size of 16-bit int, together with the   
   > integer promotion rules, is one of the reasons C was often considered   
   > inefficient and inappropriate for small 8-bit microcontrollers.   
      
      
   I'm targeting Z80 right now from my systems language.   
      
   As well as making 'int' 16 bits, I've removed the promotion rules. This   
   means 8-bit quantities needing to be cast to 16 bits as needed.   
      
   So if 'a b c' are 8 bits, and 'x' is 16 bits then the Clang Z80 compiler   
   generates 8-bit code only for:   
      
        a = b + c;   
      
   No promotions. But here:   
      
        x = b + c;   
      
   'b' and 'c' are first widened to 16 bits (using some ugly code when they   
   are signed).   
      
   This is where my language will differ: b + c produces an 8-bit result,   
   and it is that that is widened.   
      
   Casts are needed to emulate the behaviour of the auto-widening done in   
   C. But this means somewhat more efficient code with a simpler compiler.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca