Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
development_tools [2021/03/10 16:21] – [C compilers] pulkomandy | development_tools [2025/01/11 21:57] (current) – [Emulators] simer | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== C compilers ====== | ====== C compilers ====== | ||
- | SunPlus released sources for the C compiler. It doesn' | + | ===== Official |
- | uN'SP IDE is the official IDE for the CPU used. It can still be downloaded from [[https:// | + | |
+ | SunPlus released sources for the C compiler. It doesn' | ||
+ | |||
+ | * µ'nSP IDE is the official IDE for the CPU used. It can still be downloaded from [[https:// | ||
+ | |||
+ | ===== VBCC ===== | ||
+ | |||
+ | Work in progress port of vbcc: http:// | ||
+ | |||
+ | This uses the very latest version of vasm and vlink. | ||
+ | |||
+ | The code generation is unoptimized at the backend level currently. This means the frontend of the compiler can do some general, high level optimizations, | ||
+ | |||
+ | See [[VBCC]] | ||
+ | |||
+ | Here is a TODO list for optimizations: | ||
+ | |||
+ | * The code generation often needs to allocate a temporary register for some computation. When there is no other register available, one of the already used ones is PUSHed to the stack and then POPed back at the end. When this happens several times in a row, there can be a sequence of '' | ||
+ | * Post-increment is not generated directly by the compiler. Instead, there will be separate ICs to dereference the pointer, and then to increment it. These sequences should be identified and replaced with the appropriate instruction. | ||
+ | * VBCC emits a specific IC " | ||
====== Assemblers ====== | ====== Assemblers ====== | ||
- | XASM is the original assembler provided by the uN'SP IDE | + | ===== XASM ===== |
+ | |||
+ | XASM is the original assembler provided by the µ'nSP IDE. It uses an unusual syntax compared to assemblers for other systems. For example, an addition to a register is written in this form: | ||
+ | |||
+ | '' | ||
+ | |||
+ | This is the syntax also used in the MAME debugger and some other disassemblers, | ||
+ | |||
+ | ===== un-asm ===== | ||
+ | |||
+ | [[https:// | ||
+ | ===== naken_asm ===== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | This is a simple assembler that directly provides a binary file. It is not possible to use it to generate multiple object files to feed into a linker. But other than that, it is a well-tested and well documented assembler and works reliably. | ||
+ | |||
+ | ===== vasm ===== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | It can emit binaries directly, or also generate temporary object files (in its custom vobj format) for use with the vlink linker. This allows to use the assembler in the context of a C compiler toolchain. Of course the assembler can be used standalone or together with the linker as well. | ||
+ | |||
+ | Due to the 16-bit-only addressing of the µ'nSP architecture, | ||
+ | |||
+ | * In daily source snapshots from vasm homepage, | ||
+ | * In [[http:// | ||
- | Work in progress [[http:// | + | ===== Others ===== |
- | https:// | + | This [[https:// |
====== Emulators ====== | ====== Emulators ====== | ||
- | MAME has good support for the V.Smile. | + | * MAME has good support for the V.Smile. |
+ | * [[https:// | ||
+ | * https:// | ||
+ | * https:// | ||
- | [[https:// | + | ====== Graphics ====== |
+ | * https:// |