X-Git-Url: https://jxself.org/git/?p=b43-tools.git;a=blobdiff_plain;f=assembler%2Fparser.y;h=e55c2b7734617c88d26d2c6e92bc44972d42f1f1;hp=753be084c1d98925335a3fc4cbec1cfe30750beb;hb=05e57ce6fbe1ebf597ab5a7e4d10e6f275f47e44;hpb=b9e19faa25ad9e1b24f08dc77267760df1b98504 diff --git a/assembler/parser.y b/assembler/parser.y index 753be08..e55c2b7 100644 --- a/assembler/parser.y +++ b/assembler/parser.y @@ -487,8 +487,11 @@ statement : asmdir { ; /* ASM directives */ -asmdir : asmarch { - $$ = $1; +asmdir : ASM_ARCH hexnum_decnum { + struct asmdir *ad = xmalloc(sizeof(struct asmdir)); + ad->type = ADIR_ARCH; + ad->u.arch = (unsigned int)(unsigned long)$2; + $$ = ad; } | ASM_START identifier { struct asmdir *ad = xmalloc(sizeof(struct asmdir)); @@ -501,20 +504,6 @@ asmdir : asmarch { } ; -asmarch : ASM_ARCH ARCH_NEWWORLD { - struct asmdir *ad = xmalloc(sizeof(struct asmdir)); - ad->type = ADIR_ARCH; - ad->u.arch = NEWWORLD; - $$ = ad; - } - | ASM_ARCH ARCH_OLDWORLD { - struct asmdir *ad = xmalloc(sizeof(struct asmdir)); - ad->type = ADIR_ARCH; - ad->u.arch = OLDWORLD; - $$ = ad; - } - ; - label : LABEL { struct label *label = xmalloc(sizeof(struct label)); char *l; @@ -1008,11 +997,11 @@ extended_operlist : decnum COMMA decnum COMMA operand COMMA operand COMMA operan } ; -external_jump_operands : hexnum COMMA operand COMMA operand COMMA labelref { +external_jump_operands : imm COMMA operand COMMA operand COMMA labelref { struct operlist *ol = xmalloc(sizeof(struct operlist)); struct operand *cond = xmalloc(sizeof(struct operand)); - cond->type = OPER_RAW; - cond->u.raw = (unsigned long)$1; + cond->type = OPER_IMM; + cond->u.imm = $1; ol->oper[0] = cond; ol->oper[1] = $3; ol->oper[2] = $5;