Merge pull request #366 from dbrotz/fix-313

Fix signed integer overflow issues
This commit is contained in:
Antonio Niño Díaz
2019-08-17 16:09:09 +01:00
committed by GitHub
6 changed files with 170 additions and 33 deletions

42
test/asm/overflow.asm Normal file
View File

@@ -0,0 +1,42 @@
SECTION "sec", ROM0
print_x: MACRO
printv x
printt "\n"
ENDM
x = 2147483647
x = x + 1
dl 2147483647+1
print_x
x = -2147483648
x = x - 1
dl -2147483648-1
print_x
x = -2147483648
x = x * -1
dl -2147483648 * -1
print_x
x = -2147483648
x = x / -1
dl -2147483648 / -1
print_x
x = -2147483648
x = x % -1
dl -2147483648 % -1
print_x
x = -1
x = x << 1
dl -1 << 1
print_x
x = 4294967295
x = 4294967296
x = `33333333
x = `333333333

18
test/asm/overflow.out Normal file
View File

@@ -0,0 +1,18 @@
warning: overflow.asm(24):
Division of min value by -1
warning: overflow.asm(25):
Division of min value by -1
warning: overflow.asm(34):
Left shift of negative value: -1
warning: overflow.asm(35):
Left shift of negative value: -1
warning: overflow.asm(39):
Integer constant '4294967296' is too large
warning: overflow.asm(42):
Graphics constant '`333333333' is too long
$80000000
$7FFFFFFF
$80000000
$80000000
$0
$FFFFFFFE

View File

@@ -0,0 +1,18 @@
warning: -(24):
Division of min value by -1
warning: -(25):
Division of min value by -1
warning: -(34):
Left shift of negative value: -1
warning: -(35):
Left shift of negative value: -1
warning: -(39):
Integer constant '4294967296' is too large
warning: -(42):
Graphics constant '`333333333' is too long
$80000000
$7FFFFFFF
$80000000
$80000000
$0
$FFFFFFFE