methodology-sdcc-vanilla

Benchmarks vanilla upstream SDCC against z88dk-zsdcc using pinned svn checkouts and map-sum sizing.

1.1k|206|Updated Mar 16, 2016
One-click install
npx skills add https://github.com/z88dk/z88dk --skill methodology-sdcc-vanilla-z88dk
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: methodology-sdcc-vanilla
Source: https://github.com/z88dk/z88dk/tree/main/.agents/skills/methodology-sdcc-vanilla
Command: npx skills add https://github.com/z88dk/z88dk --skill methodology-sdcc-vanilla-z88dk

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? It prevents benchmark methodology errors when measuring stock upstream SDCC (not z88dk's patched zsdcc), ensuring published numbers use the correct binary, version banner, size rule, and wiki row placement. ## Core Features & Use Cases - Correct toolchain separation: Distinguishes /usr/local/bin/sdcc (vanilla, __sdcccall(1) ABI) from bin/z88dk-zsdcc (ABI 0 via z88dk patch), so numbers never land in the wrong RESULT block or wiki row. - Pinned, reproducible builds: Checks out svn r16639 (SDCC 4.6.0), publishes the #16608 banner, and lists configure flags such as --disable-f8l-port to avoid sdasf8 build failures. - Standardized compile, size, and tick measurement: Uses sdcc -mz80 -DSTATIC -DTIMER, makebin -p, map-section sum sizing, and z88dk-ticks with start/end addresses resolved from .sym/.map files. - Use Case: Re-measuring the SDCC rows in support/benchmarks/*/sdcc/readme.txt for a 4.6.0 release and updating the Benchmarks wiki without contaminating Z88DK/SDCC rows. ## Quick Start Ask the assistant to re-run the vanilla SDCC benchmark for a given support/benchmarks directory and update its sdcc/readme.txt RESULT block with the SDCC 4.6.0 #16608 tag.

Frequently Asked Questions about methodology-sdcc-vanilla

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I benchmark vanilla SDCC against z88dk-zsdcc?

Compile with stock `/usr/local/bin/sdcc -mz80 -DSTATIC -DTIMER`, run `makebin -p` on the .ihx output, then measure ticks with `z88dk-ticks -mz80` using start and end addresses from the .sym or .map file. Compare against zsdcc numbers from the z88dk-classic or z88dk-new recipes.

What is the difference between vanilla SDCC and z88dk-zsdcc?

Vanilla SDCC is stock upstream sdcc using the `__sdcccall(1)` ABI and SDCC's own libraries. zsdcc is z88dk's patched build invoked via `zcc -compiler=sdcc`, using ABI 0 from `src/zsdcc/sdcc-z88dk.patch` and z88dk classic or newlib libraries.

Why does sdcc --version show #16608 when the checkout is r16639?

The svn checkout is r16639 (4.6.0 final), but the ChangeLog `$Revision$` keyword reads 16608, which is what the version banner prints. Publish the banner value `#16608` and note the checkout revision separately; do not patch the vanilla tree.

Why does the vanilla SDCC build fail asking for sdasf8?

Passing `--disable-f8-port` alone leaves the f8l port enabled, which requires `sdasf8`. Also pass `--disable-f8l-port` when configuring the upstream tree to disable both ports.

What should I do when the sort-equ-5000 benchmark hangs?

Stock K&R qsort on equal elements is O(n²) and may never finish under ticks. Publish the result as "did not finish" rather than letting z88dk-ticks run for hours; kill hung processes, which usually indicate a wrong CPU flag or too-small counter.

When should I not use this vanilla SDCC methodology?

Do not use it for `-compiler=sdcc` or zsdcc patch work, which belongs to the compiler-zsdcc skill. Vanilla numbers must never appear in Z88DK/SDCC wiki rows, and zsdcc numbers must never appear in an sdcc/ RESULT block.