Difference between revisions of "SDCC"

From MSX Game Library

(SDCC 4.4.0)
Line 76: Line 76:
 
* Known issues:
 
* Known issues:
 
** On Windows, win32 version just doesn't works and win64 is... absent. You can use [https://sourceforge.net/projects/sdcc/files/sdcc-win64/4.4.0/ win64 version of <tt>SDCC 4.4.0 RC3</tt>] (same content than the official release).
 
** On Windows, win32 version just doesn't works and win64 is... absent. You can use [https://sourceforge.net/projects/sdcc/files/sdcc-win64/4.4.0/ win64 version of <tt>SDCC 4.4.0 RC3</tt>] (same content than the official release).
 +
** Some project can increase significative in final size.
 +
** Some project are broken when compiled with SDCC 4.4.0 (''Clock'' sample and ''Phenix Corrupta'' project).
  
 
== Links ==
 
== Links ==

Revision as of 19:26, 30 March 2024

SDCC is the toolchain used in MSXGL to compile, assemble and link the sources files.

Supported version:

  • Embedded: SDCC 4.2.0
  • Last tested: SDCC 4.4.0 RC3 (Windows) and SDCC 4.4.0 (Linux)

Assembler

The assembler, sdasz80, is based on ASxxxx cross assembles.

sdasz80 syntax is almost standard except for:

  • Define instructions numeral values: must be prefixed with # character.
  • Define directive: must be prefix with . character.
  • Access to IX and IY register using offset: offset have to be write before the register name into parentheses.
Standard sdasz80
; Numeral
ld      a, 100
and     01111100b
ld      hl, 1234h

; Directive
db      100
dw      1234h

; IX/IY offset
ld      e, iy[0]
ld      d, iy[1]
; Numeral
ld      a, #100
and     #0b01111100
ld      hl, #0x1234

; Directive
.db     100
.dw     0x1234

; IX/IY offset
ld      e, 0(iy)
ld      d, 1(iy)

Versions

SDCC 4.2.0

(currently recommended version for MSXgl)

  • New features:
    • New calling convention (use register to pass function parameters)
  • Known issues: None

SDCC 4.3.0

  • New features:
  • Known issues:

SDCC 4.4.0

  • Main features:
    • Native support for ASCII R800, the MSX turbo R's CPU.
  • Full change log:
    • Optimizations for rotations.
    • Generalized constant propagation.
    • New command line option --syntax-only to only parse the input.
    • Added C99 header inttypes.h
    • Added library functions imaxabs, imaxdiv, llabs, strtoimax, strtoll, strtoull, strtoumax, wcsncmp, wcstoimax, wcstol, wcstoll, wcstoul, wcstoull, wcstoumax
    • New r800 port to better support the ASCII Corp R800 and Zilog Z280.
    • Improved optimizations for code speed for stm8, pdk, z80 (and related).
  • Known issues:
    • On Windows, win32 version just doesn't works and win64 is... absent. You can use win64 version of SDCC 4.4.0 RC3 (same content than the official release).
    • Some project can increase significative in final size.
    • Some project are broken when compiled with SDCC 4.4.0 (Clock sample and Phenix Corrupta project).

Links

For more information: