Small C Compiler for KolibriOS [v 0.5.4]

Post here questions, problems and suggestions in English language
  • cool!
  • Small C Compiler README:

    Code: Select all

    Small C Compiler Version 2.2
                                             
             The  Small C compiler translates a subset of the C language into
             assembly language. It runs under PC/MS-DOS 2.1 and later.  Small
             C  is  compatible  with  both  Small Assembler and the Microsoft
             assembler MASM. Small C supports a small memory model  with  one
             code and one data/stack segment.
             
             Small  C  supports  arrays  of  one  dimension. Functions always
             return integer  values.  External  functions  are  automatically
             declared.  Initialization  of global variables is supported. The
             preprocessor supports #include, #define, #ifdef, #ifndef, #else,
             #endif,  #asm,  #endasm  commands  .   The   following   control
             statements  are  supported:  if,  switch,  case, default, break,
             continue, while, for, and do/while. All expression operators are
             supported. Only signed and unsigned integer and  character  data
             types  are  supported. The following standard C features are not
             supported: structures, fields, unions, arrays of  pointers,  and
             casts.
             
             Small  C  supports  UNIX-like  I/O  redirection and command-line
             argument passing. The Small C library includes over 80 functions
             -- a nearly complete set  of  the  standard  UNIX/C  repertoire.
             Binary  as  well  as  character  stream  I/O  is  supported. The
             formatted I/O  functions  printf()  and  scanf()  are  included.
             Random  access  to  files  is  provided.  Programs  can  request
             additional file buffering.
             
             The compiler itself is written in Small  C  and  is  distributed
             with  both  object  and source code. As a self compiler, Small C
             can be modified to  work  in  other  environments  and  to  meet
             special   needs.   Since   everything   is  revealed  and  fully
             documented, Small C  has  tremendous  value  as  an  educational
             device.  Small  C  uses a single pass, recursive descent parsing
             algorithm. It generates p-codes for internal use, and  optimizes
             its output.
             
             The  Small  C  language  and  compiler are fully described in "A
             Small C Compiler: Language, Usage, Theory, and Design" by  James
             E. Hendrix. Copies are available from:
             
                                  M&T Publishing, Inc.
                                  501 Galveston Dr.
                                  Redwood City, CA 94063
                                  Phone: 1 (800) 533-4372
             
                                      J. E. Hendrix
                                      P.O. Box 1435
                                    Oxford, MS  38655
    
  • Oh, It looks good!
    You can use skinned window http://kolibrios.org/?p=Documentation&s ... ons&sfp=00
    Good luck in your work ;)
    Last edited by Leency on Fri Feb 08, 2008 6:08 pm, edited 1 time in total.
    Из хаоса в космос
  • I've started to make KLIB.H - the library will provide easy way to use many controls.

    I've just implemented CheckBox control (it's first control of my lib)
    Image <- two CheckBox'es
    How it works:

    First you declare controls:

    Code: Select all

    // CONTROLS:   
    #define CONTROLS 2
    int control[CONTROLS];
    int cont1[7] = { CheckBox,4,10,40,0x111111,0xFFFFFF,0};
    int cont2[7] = { CheckBox,5,25,55,0xBBBBBB,0,0};
    /* CheckBox
    0	int type
    1	int id
    2	int x,
    3	int y,
    4	int color,
    5	int colorText
    6	int checked - if it checked or not 
    */
    
    void main()
    {
    	control[0]=&cont1[0];
    	control[1]=&cont2[0];
    Event detection: (checkbox automatically changes status from ' ' to 'X')

    Code: Select all

    event=get_event();
    		switch(event)
    		{
    			case 1: draw_window(); break;
    			case 2: get_button(); break;
    			case 3: button_id=get_button();
    			    eventControls(control,CONTROLS,button_id); <--- THE MAGIC IS HERE!!			
    			break;
    		}
    Render controls:

    Code: Select all

    draw_window(){
    ....
    renderControls(control, CONTROLS); <--
    {
  • it's really cool. any news at moment?
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • "Render controls:
    draw_window(){
    ....
    renderControls(control, CONTROLS); <--
    {" - i think last sybmbol is wrorg..
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • I try to implement libGUI for SCC instead of creating my own GUI library.
    renderControls(control, CONTROLS); <--
    {" - i think last sybmbol is wrorg.
    CONTROLS is count of controls in control array.
  • "CONTROLS is count of controls in control array." - no, i mean "{" symbol, there must be "}", i think.
    Else one. Its compiler saves .asm file with the "space" at the end. Ecstention contains of 4 symbols "a","s","m","space".. it is bad, because FASM don't understand it, and i cannot make association with ".asm " files in KFAR.
    P.S. Sorry my bad english..
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Gluk wrote:... Its compiler saves .asm file with the "space" at the end. Ecstention contains of 4 symbols "a","s","m","space".. it is bad, because FASM don't understand it, and i cannot make association with ".asm " files in KFAR...
    Thanks to you I figured out the problem! There is link to scc version 0.5.4 in my first post. So just download the newest version and extension of output file will be all right 8)
  • I have some questions.

    1)

    Code: Select all

    include 'INTRINS.ASM'
    I must include this file? Is it required for small c compiler work?

    2)

    Code: Select all

    get_event()
    {
    #asm
      mov  eax,10
      int  0x40
    #endasm
    }
    

    Code: Select all

    event=get_event();
    How does compiler known, which value returned by this function? Or return value in scc is always stored in eax?

    Sorry for my English
  • Who is online

    Users browsing this forum: No registered users and 13 guests