Previously, ast transformations were performed informally as ad-hoc
modifications to the generated C source code. In this commit, the
same transformations are performed by rewriting the ast prior to code
generation time.
The most significant new transformer is transform_assignment_list.
This transforms assignments such as:
a, b, c = f(b, c, d)
To:
a = f(&b, &c, d)
The former syntax is used frequently in the manual's description of
FPU-related instructions.
These changes fix logical consistency and correctness issues with the
instruction definitions as printed in the SH4 manual.
The most serious issues were:
- div0u/div0s/div1 use `m` as a temporary variable which
contradicts the existence of the `m` register number
- missing semicolons
- inconsistent references to immediate and displacement variable names