diff options
| author | jaortega <jaortega> | 2000-11-13 23:29:21 +0000 | 
|---|---|---|
| committer | jaortega <jaortega> | 2000-11-13 23:29:21 +0000 | 
| commit | 8114f67e2642494421f4de4e9deb226ac3c5a8ee (patch) | |
| tree | c34369e55b1679da256b34af2d95a048be02c307 | |
| parent | 0816906a35f472c778ca2fd22dfed42391bdae74 (diff) | |
| download | mdk-8114f67e2642494421f4de4e9deb226ac3c5a8ee.tar.gz mdk-8114f67e2642494421f4de4e9deb226ac3c5a8ee.tar.bz2 | |
corrected bug in stress3.mixal (pking)
| -rw-r--r-- | mixlib/mix_ins.h | 2 | ||||
| -rw-r--r-- | mixlib/mix_parser.c | 8 | ||||
| -rw-r--r-- | mixlib/mix_scanner.l | 2 | 
3 files changed, 9 insertions, 3 deletions
| diff --git a/mixlib/mix_ins.h b/mixlib/mix_ins.h index 5915a19..d0829e5 100644 --- a/mixlib/mix_ins.h +++ b/mixlib/mix_ins.h @@ -144,7 +144,7 @@ mix_ins_to_word(const mix_ins_t *ins);  extern mix_ins_id_t  mix_word_to_ins(mix_word_t w, mix_ins_t *ins); -#define mix_word_set_address(word,addr) (word) |= ((addr)<<18)  +#define mix_word_add_address(word,addr) (word) |= ((addr)<<18)   /* decompose an instruction codified in a word into its parts */  #define mix_get_ins_address(word) ((mix_address_t)((word)>>18)) diff --git a/mixlib/mix_parser.c b/mixlib/mix_parser.c index fc80a76..82dd692 100644 --- a/mixlib/mix_parser.c +++ b/mixlib/mix_parser.c @@ -209,7 +209,13 @@ update_future_refs_value_ (mix_parser_t *parser, const gchar *name,  	  node =   	    (ins_node_ *)g_tree_lookup (parser->ins_table,tmp->data);  	  g_assert (node); -	  mix_word_set_address (node->ins, value); +	  if (mix_get_ins_address (node->ins) == 1) { +	    value = mix_short_negative (value); +	    node->ins = mix_word_set_field (node->ins, +					    MIX_WORD_ZERO, +					    mix_fspec_new (1,2)); +	  } +	  mix_word_add_address (node->ins, value);  	  g_tree_insert (parser->ins_table, tmp->data, (gpointer)node);  	  tmp = g_slist_next (tmp);  	} diff --git a/mixlib/mix_scanner.l b/mixlib/mix_scanner.l index b1d4a13..c98d0b2 100644 --- a/mixlib/mix_scanner.l +++ b/mixlib/mix_scanner.l @@ -314,7 +314,7 @@ wexpr   {expr}({fpart})?(,{expr}({fpart})?)*      if ( !mix_symbol_table_is_defined (parser->symbol_table, s) )        {  	mix_parser_set_future_ref (parser, s); -	unput ('0'); +	unput (neg? '1':'0');        }      else        { | 
