ref: fe6e5e445bd6ac0e53200da95884cdb7746b002c
parent: 781c90b940ba24e23eb6c92eea6549f7643746fa
author: Antonio Niño Díaz <[email protected]>
date: Fri Dec 29 07:05:57 EST 2017
Remove warning on DB/DW/DL emtpy lists This warning was added in 781c90b940ba24e23eb6c92eea6549f7643746fa as a way of catching the following cases, which are most likely programmer mistakes: DB 1,, 2 DB 1, 2, However, the warning was also triggered in the following case: DB It can be used as a replacement of: DS 1 In this case, it shouldn't output a warning. Signed-off-by: Antonio Niño Díaz <[email protected]>
--- a/src/asm/asmy.y
+++ b/src/asm/asmy.y
@@ -806,13 +806,16 @@
{ out_Skip( $2 ); }
;
-db : T_POP_DB constlist_8bit
+db : T_POP_DB constlist_8bit_entry ',' constlist_8bit
+ | T_POP_DB constlist_8bit_entry_single
;
-dw : T_POP_DW constlist_16bit
+dw : T_POP_DW constlist_16bit_entry ',' constlist_16bit
+ | T_POP_DW constlist_16bit_entry_single
;
-dl : T_POP_DL constlist_32bit
+dl : T_POP_DL constlist_32bit_entry ',' constlist_32bit
+ | T_POP_DL constlist_32bit_entry_single
;
purge : T_POP_PURGE
@@ -1000,6 +1003,18 @@
}
;
+constlist_8bit_entry_single : /* empty */ {
+ out_Skip( 1 );
+ } | const_8bit {
+ out_RelByte( &$1 );
+ } | string {
+ char *s = $1;
+ int length = charmap_Convert(&s);
+ out_AbsByteGroup(s, length);
+ free(s);
+ }
+;
+
constlist_16bit : constlist_16bit_entry
| constlist_16bit_entry ',' constlist_16bit
;
@@ -1013,6 +1028,13 @@
}
;
+constlist_16bit_entry_single : /* empty */ {
+ out_Skip( 2 );
+ } | const_16bit {
+ out_RelWord( &$1 );
+ }
+;
+
constlist_32bit : constlist_32bit_entry
| constlist_32bit_entry ',' constlist_32bit
;
@@ -1021,6 +1043,13 @@
out_Skip( 4 );
if( nPass==1 )
warning("Empty entry in list of 32-bit elements (treated as 0).");
+ } | relocconst {
+ out_RelLong( &$1 );
+ }
+;
+
+constlist_32bit_entry_single : /* empty */ {
+ out_Skip( 4 );
} | relocconst {
out_RelLong( &$1 );
}
--- a/src/asm/rgbasm.5
+++ b/src/asm/rgbasm.5
@@ -598,7 +598,7 @@
The content is undefined.
This is the preferred method of allocationg space in a RAM section.
You can, however, use
-.Ic DB ,
+.Ic DB ,
.Ic DW
and
.Ic DL