SDK v15.0.0
Breaking changes
- llvm-mos/llvm-mos#456 - 65816 assembler changes - @asiekierka
lda >addrwas previously interpreted aslda mos16hi(addr), but now will be interpreted aslda mos24(addr). This is unlikely to break production code.lda <addr8was previously interpreted aslda mos16lo(addr), but now will be interpreted aslda mos8(addr). As the two relocations are functionally (but not semantically) equivalent, this should not break production code.- Likewise, functional (but not semantic) changes involve the relocations emitted by immediate expressions (
lda #val).
New features
- #316 - Add C++ fixed point math library - @jroweboy
- Supports various fractional and integral bit sizes.
- Supports user-defined literals for common sizes (e.g.,
9.4_12_4is the 16-bit fixed point number with 12 integral bits and 8 fractional bits that is closest in value to 9.4).
Bug fixes
-
llvm-mos/llvm-mos#456 - 65816 assembler changes - @asiekierka
- The immediate and address modifiers (
#<,#>,#^,<,!,>) now adhere to WDC recommendations as documented in the 65816 datasheet. - In particular, this means the behaviour of
lda >addrchanges, whilelda !addrandlda #^addrhave been introduced.
Immediate expressions now emitR_MOS_IMM8andR_MOS_IMM16, while address expressions now emitR_MOS_ADDR8andR_MOS_ADDR16relocations. - Some error messages have been adjusted to more accurately represent the assembler's limitations.
- Bugs/limitations in the SPC700 assembler's handling of
addr + Xandaddr + Yaddressing mode syntaxes have been fixed, and a test has been added. SandRcan now be used as register names in stack-relative addressing modes instead ofSPandRP. This matches WDC 65816 and 65EL02 documentation/recommendations, respectively.
- The immediate and address modifiers (
-
dc85a7d - Fix
is_floating_pointr_vC++<type_traits>typo