mirror of
https://github.com/michaelcmartin/Ophis.git
synced 2024-09-10 01:54:25 +00:00
This pass actually isn't an optimizer in that it produces larger binaries when it triggers. However, the larger binaries created will actually assemble properly. The ExtendBranches pass detects Relative instructions (that is, branches) that extend past the signed-8-bit range Relative instructions permit, and replaces them with a branch-jump combination with identical semantics. Since this may be evidence of a program bug, Ophis will warn when the optimization is triggered. Due to similarities between this pass and UpdateLabels, both passes have been refactored in passing.
38 lines
509 B
Plaintext
38 lines
509 B
Plaintext
.text
|
|
.org $0800
|
|
early:
|
|
bpl late
|
|
bmi late
|
|
bvc late
|
|
bvs late
|
|
bcc late
|
|
bcs late
|
|
bne late
|
|
beq late
|
|
bpl early
|
|
bmi early
|
|
bvc early
|
|
bvs early
|
|
bcc early
|
|
bcs early
|
|
bne early
|
|
beq early
|
|
.advance $0900
|
|
late:
|
|
bpl late
|
|
bmi late
|
|
bvc late
|
|
bvs late
|
|
bcc late
|
|
bcs late
|
|
bne late
|
|
beq late
|
|
bpl early
|
|
bmi early
|
|
bvc early
|
|
bvs early
|
|
bcc early
|
|
bcs early
|
|
bne early
|
|
beq early
|