Allow binary AND to be sometimes constant (#976)

This commit is contained in:
Eldred Habert
2022-02-05 20:17:57 +01:00
committed by GitHub
parent 6b903059fe
commit 6842c831fd
7 changed files with 84 additions and 11 deletions

17
test/asm/const-and.asm Normal file
View File

@@ -0,0 +1,17 @@
println @ & 0 ; This should produce an error, but not crash
SECTION "Test", ROM0,ALIGN[4,2]
ds 40
Aligned:
println Aligned & $0f
println ~$fffc & Aligned
println Aligned & $1f ; Not constant
println @ & $0f
SECTION "Unaligned", ROM0
println @ & 0
println @ & 1 ; Nope

7
test/asm/const-and.err Normal file
View File

@@ -0,0 +1,7 @@
error: const-and.asm(2):
PC has no value outside a section
error: const-and.asm(11):
Expected constant expression: 'Aligned' is not constant at assembly time
error: const-and.asm(17):
Expected constant expression: PC is not constant at assembly time
error: Assembly aborted (3 errors)!

7
test/asm/const-and.out Normal file
View File

@@ -0,0 +1,7 @@
$0
$A
$A
$0
$A
$0
$0