assex.h
assrl.c
ip_spec.h
-ip_spec.t
maktab.c
asprint.p
em_ass.6
asstb.o: asstb.c
-asstb.c: maktab ip_spec.t
- maktab ip_spec.t asstb.c
+asstb.c: maktab $d/etc/ip_spec.t
+ maktab $d/etc/ip_spec.t asstb.c
maktab: maktab.c $h/em_spec.h ip_spec.h $h/em_flag.h \
$l/em_data.a
pr:
@(pr ass00.h assex.h ip_spec.h ass?0.c ass[rcd]?.c \
- maktab.c ; pr -3 ip_spec.t)
+ maktab.c)
case OPSHORT :
if ( val<0 ) val = -1-val ;
return val>=0 && val<number*256 ;
+ case OP16U:
+ return val>=0 && val<=65535L &&
+ ( i_flag!=PAR_G || val<=maxadr ) ;
case OP16 :
- /* Commented out for the time being. This must be in
- ip_spec.t ...
- if ( i_flag==PAR_G ) {
- return val>=0 &&
- val<=maxadr && val <= 65535L;
- }
- */
return val>= -32768 && val<=32767 ;
case OP32 :
return TRUE ;
case OPMINI : break ;
case OP8 :
case OPSHORT : cnt++ ; break ;
+ case OP16U:
case OP16 : cnt+=2 ; break ;
case OP32 : cnt+=5 ; break ;
case OP64 : cnt+=9 ; break ;
put8((char)value) ;
break ;
case OP16:
+ case OP16U:
put16(int_cast value) ;
break ;
case OP32:
#define OP16 4 /* 2 2-byte signed operand */
#define OP32 5 /* 4 4-byte signed operand */
#define OP64 6 /* 8 8-byte signed operand */
+#define OP16U 7 /* u 2-byte unsigned operand */
#define OPESC 010 /* e escaped opcode */
#define OPWORD 020 /* w operand is word multiple */
check(type) ; type=OP32 ; break ;
case '8' :
check(type) ; type=OP64 ; break ;
+ case 'u':
+ check(type) ; type=OP16U ; break ;
case 'e' :
check(escape) ; escape=0 ; break ;
case 'N' :
if ( escape!=ILLGL ) error("Conflicting escapes") ;
escape=ILLGL ;
case OP16 :
+ case OP16U :
case OP8 :
case OPSHORT :
case OPNO :
case OPMINI : break ;
case OP8 :
case OPSHORT : cnt++ ; break ;
+ case OP16U :
case OP16 : cnt+=2 ; break ;
case OP32 : cnt+=5 ; break ;
case OP64 : cnt+=9 ; break ;
else if ( flag&OP_POS )
posc[opc]++ ;
break ;
+ case OP16U :
case OP32 :
case OP64 :
break ;