📄 movl.s
字号:
test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7.endif ; h8sxmov_l_disp16_to_reg32: set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @(dd:16, ers), erd mov.l #long_src+0x1234, er1 mov.l @(-0x1234:16, er1), er0 ; Register plus 16-bit disp. operand;;; .word 0x0100;;; .word 0x6f10;;; .word -0x1234 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear test_h_gr32 0x77777777 er0 ; mov result: a5a5 | 7777 test_h_gr32 long_src+0x1234, er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7mov_l_disp32_to_reg32: set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @(dd:32, ers), erd mov.l #long_src+65536, er1 mov.l @(-65536:32, er1), er0 ; Register plus 32-bit disp. operand;;; .word 0x7890;;; .word 0x6b20;;; .long -65536 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear test_h_gr32 0x77777777 er0 ; mov result: a5a5 | 7777 test_h_gr32 long_src+65536, er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7mov_l_abs16_to_reg32: set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @aa:16, erd mov.l @long_src:16, er0 ; 16-bit address-direct operand;;; .word 0x0100;;; .word 0x6b00;;; .word @long_src ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear test_h_gr32 0x77777777 er0 test_gr_a5a5 1 ; Make sure other general regs not disturbed test_gr_a5a5 2 test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7mov_l_abs32_to_reg32: set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @aa:32, erd mov.l @long_src:32, er0 ; 32-bit address-direct operand;;; .word 0x0100;;; .word 0x6b20;;; .long @long_src ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear test_h_gr32 0x77777777 er0 test_gr_a5a5 1 ; Make sure other general regs not disturbed test_gr_a5a5 2 test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7.if (sim_cpu == h8sx) ;; ;; Move long from memory to memory ;; mov_l_indirect_to_indirect: ; reg indirect, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @ers, @erd mov.l #long_src, er1 mov.l #long_dst, er0 mov.l @er1, @er0;;; .word 0x0108;;; .word 0x0100 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear ;; Verify the affected registers. test_h_gr32 long_dst er0 test_h_gr32 long_src er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext55 fail.Lnext55: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext56 fail.Lnext56: ; OK, pass on.mov_l_postinc_to_postinc: ; reg post-increment, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @ers+, @erd+ mov.l #long_src, er1 mov.l #long_dst, er0 mov.l @er1+, @er0+;;; .word 0x0108;;; .word 0x8180 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear ;; Verify the affected registers. test_h_gr32 long_dst+4 er0 test_h_gr32 long_src+4 er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext65 fail.Lnext65: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext66 fail.Lnext66: ; OK, pass on.mov_l_postdec_to_postdec: ; reg post-decrement, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @ers-, @erd- mov.l #long_src, er1 mov.l #long_dst, er0 mov.l @er1-, @er0-;;; .word 0x0108;;; .word 0xa1a0 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear ;; Verify the affected registers. test_h_gr32 long_dst-4 er0 test_h_gr32 long_src-4 er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext75 fail.Lnext75: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext76 fail.Lnext76: ; OK, pass on.mov_l_preinc_to_preinc: ; reg pre-increment, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @+ers, @+erd mov.l #long_src-4, er1 mov.l #long_dst-4, er0 mov.l @+er1, @+er0;;; .word 0x0108;;; .word 0x9190 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear ;; Verify the affected registers. test_h_gr32 long_dst er0 test_h_gr32 long_src er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext85 fail.Lnext85: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext86 fail.Lnext86: ; OK, pass on.mov_l_predec_to_predec: ; reg pre-decrement, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @-ers, @-erd mov.l #long_src+4, er1 mov.l #long_dst+4, er0 mov.l @-er1, @-er0;;; .word 0x0108;;; .word 0xb1b0 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear ;; Verify the affected registers. test_h_gr32 long_dst er0 test_h_gr32 long_src er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext95 fail.Lnext95: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext96 fail.Lnext96: ; OK, pass on.mov_l_disp2_to_disp2: ; reg 2-bit disp, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @(dd:2, ers), @(dd:2, erd) mov.l #long_src-4, er1 mov.l #long_dst-8, er0 mov.l @(4:2, er1), @(8:2, er0);;; .word 0x0108;;; .word 0x1120 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear ;; Verify the affected registers. test_h_gr32 long_dst-8 er0 test_h_gr32 long_src-4 er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext105 fail.Lnext105: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext106 fail.Lnext106: ; OK, pass on.mov_l_disp16_to_disp16: ; reg 16-bit disp, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @(dd:16, ers), @(dd:16, erd) mov.l #long_src-1, er1 mov.l #long_dst-2, er0 mov.l @(1:16, er1), @(2:16, er0);;; .word 0x0108;;; .word 0xc1c0;;; .word 0x0001;;; .word 0x0002 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear ;; Verify the affected registers. test_h_gr32 long_dst-2 er0 test_h_gr32 long_src-1 er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext115 fail.Lnext115: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext116 fail.Lnext116: ; OK, pass on.mov_l_disp32_to_disp32: ; reg 32-bit disp, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @(dd:32, ers), @(dd:32, erd) mov.l #long_src-1, er1 mov.l #long_dst-2, er0 mov.l @(1:32, er1), @(2:32, er0);;; .word 0x0108;;; .word 0xc9c8;;; .long 1;;; .long 2 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear ;; Verify the affected registers. test_h_gr32 long_dst-2 er0 test_h_gr32 long_src-1 er1 test_gr_a5a5 2 ; Make sure other general regs not disturbed test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext125 fail.Lnext125: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext126 fail.Lnext126: ; OK, pass on.mov_l_abs16_to_abs16: ; 16-bit absolute addr, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @aa:16, @aa:16 mov.l @long_src:16, @long_dst:16;;; .word 0x0108;;; .word 0x4040;;; .word @long_src;;; .word @long_dst ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear test_gr_a5a5 0 ; Make sure *NO* general registers are changed test_gr_a5a5 1 test_gr_a5a5 2 test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext135 fail.Lnext135: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext136 fail.Lnext136: ; OK, pass on.mov_l_abs32_to_abs32: ; 32-bit absolute addr, memory to memory set_grs_a5a5 ; Fill all general regs with a fixed pattern set_ccr_zero ;; mov.l @aa:32, @aa:32 mov.l @long_src:32, @long_dst:32;;; .word 0x0108;;; .word 0x4848;;; .long @long_src;;; .long @long_dst ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 test_neg_clear test_zero_clear test_ovf_clear test_carry_clear test_gr_a5a5 0 ; Make sure *NO* general registers are changed test_gr_a5a5 1 test_gr_a5a5 2 test_gr_a5a5 3 test_gr_a5a5 4 test_gr_a5a5 5 test_gr_a5a5 6 test_gr_a5a5 7 ;; Now check the result of the move to memory. cmp.l @long_src, @long_dst beq .Lnext145 fail.Lnext145: ;; Now clear the destination location, and verify that. mov.l #0, @long_dst cmp.l @long_src, @long_dst bne .Lnext146 fail.Lnext146: ; OK, pass on..endif pass exit 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -