gas/ARM parser rewrite

Nick Clifton nickc@cambridge.redhat.com
Wed Dec 5 02:57:00 GMT 2001


Hi Richard,

> <date>  Richard Earnshaw  (rearnsha@arm.com)
> 
> 	* tc-arm.c (struct asm_opcode): Delete comp_suffix and flags.  Add
> 	cond_offset.  Rename variants->variant.
> 	(insns): Adjust for new format.  Explicitly code each variant that
> 	takes flags.  Remove temporary instructions.
> 	(struct arm_it): Remove redundant field suffix.
> 	(s_flag, ldr_flags, str_flags, byte_flag, cmp_flags, ldm_flags)
> 	(stm_flags, lfm_flags, sfm_flags, round_flags, fix_flags, except_flag)
> 	(long_flag): Delete.
> 	(struct asm_flg): Delete.
> 	(LONGEST_INST): Delete.
> 	(V4_STR_BIT): Define.
> 	(struct thumb_opcode): Rename variants->variant.
> 	(do_empty): Renamed from do_nop.
> 	(ldst_extend): Delete argument hwse.  Split code for half-word and
> 	signed byte instructions to ...
> 	(ldst_extend_v4): ... here.
> 	(ld_mode_required_here): Use ldst_extend_v4.
> 	(do_ldrd): Simplify now that this is only called for ldrd.  No
> 	need to test for XScale, which was wrong anyway.  Don't reject r12
> 	as a target register.  Add test that ldrd doesn't update an index
> 	register.
> 	(do_pld): Don't allow post-indexed or write-back addressing modes.
> 	Adjust call to ldst_extend.
> 	(do_adr): Split code for adrl to ...
> 	(do_adrl): ... here.
> 	(do_cmp): No need to fold in COND_BIT.
> 	(do_ldst): Simplify.  Split code for ldrt/strt into do_ldstt.  Split
> 	code to handle half-word and signed byte instructions to ...
> 	(do_ldstv4): ... here.
> 	(do_ldstt): New function.  Handle load/store with translate.
> 	(do_ldmstm): Write feature modification bits directly into
> 	inst.instruction.
> 	(do_fpa_ldst): Remove suffix handling code.
> 	(do_fpa_dyadic, do_fpa_monadic, do_fpa_from_reg): Likewise.
> 	(do_fpa_ldmstm): Type of access is now held in inst.instruction.
> 	(build_arm_ops_hsh): New function.
> 	(md_begin): Call it.  Don't build the ARM opcode directly.
> 	(md_assemble): Simplify ARM instruction handling.
> 
> gas/testsuite:
> <date>  Richard Earnshaw  (rearnsha@arm.com)
> 
> 	* gas/arm/xscale.s, arm/xscale.s (pld tests): pld instruction has no
> 	post-indexed addressing modes.

Approved - please apply.

Cheers
        Nick

PS.  Thanks for doing this!



More information about the Binutils mailing list