Skip to content

SDK v0.9.1

Compare
Choose a tag to compare
@github-actions github-actions released this 11 Sep 18:18
· 487 commits to main since this release

New libraries

  • The nesdoug library has been added to the NES target and is accessible via -lnesdoug. It is likely buggy and should be considered alpha quality.

Bug fixes

  • Added C++ extern C declarations to the neslib library.
  • The neslib crt0 additions now clear memory before copying .data, not after. This had the effect of zeroing all data segments.
  • Misc small cleanups and bug fixes to the neslib port.
  • BSS and Data section zero and copy routines no longer run if a section coincidentally begins with the prefix. Instead, the prefix must end with a dot, followed by another name. For example, a .data_ptr section will no longer trigger data copying, while .data.ptr and .data both still would.

Optimizations

  • The register allocator will no longer place a value into a register such that the only uses of that register are copies out of it to physical registers. It will instead prefer to split the live range into something that can be assigned to the destination physical register. This has the particular effect of rematerializing constant loads used as function arguments to right before the call, rather than stashing them in the zero page.
  • Multi-byte comparisons against zero no longer consider bytes that are statically known to be zero.
  • Sums where one addend is either -1 or 1, depending on control flow, are split into separate increment and decrement operations.
  • An expensive copy optimization pass was added right before copy elimination. This helps to remove some of the worse excesses of the register allocator, and this brings our CoreMark score up to 0.089 from 0.088. (A rare occurrence!)