shift.s

来自「一个MIPS虚拟机的源码」· S 代码 · 共 56 行

S
56
字号
/*  ../vmips -o haltdumpcpu -o haltbreak shift.rom *//*  should end with R10=00000000 *//*  tests instructions: sllv srav srl srlv sra */	.text	.globl __start__start:	addiu $10, $0, 0      /* $10 = count of failures */	addiu $4, $0, 4       /* $4 = shift amount */	li $5, 0xa5a5a5a5     /* $5 = test pattern */	li $6, 0x5a5a5a50     /* $6 = $5 << 4 */	sllv $7, $5, $4       /* $7 = $5 << 4 */	beq $7, $6, 1f        /* test result of sllv */	addiu $10, $10, 1     /* if it doesn't match, fail */1:	addiu $4, $0, 4       /* $4 = shift amount */	li $5, 0xa5a5a5a5     /* $5 = test pattern */	li $6, 0x5a5a5a50     /* $6 = $5 << 4 */	sll $7, $5, 4         /* $7 = $5 << 4 */	beq $7, $6, 1f        /* test result of sll */	addiu $10, $10, 1     /* if it doesn't match, fail */1:	addiu $4, $0, 4       /* $4 = shift amount */	li $5, 0xa5a5a5a5     /* $5 = test pattern */	li $6, 0x0a5a5a5a     /* $6 = $5 >> 4 */	srlv $7, $5, $4       /* $7 = $5 >> 4 */	beq $7, $6, 1f        /* test result of srlv */	addiu $10, $10, 1     /* if it doesn't match, fail */1:	addiu $4, $0, 4       /* $4 = shift amount */	li $5, 0xa5a5a5a5     /* $5 = test pattern */	li $6, 0x0a5a5a5a     /* $6 = $5 >> 4 */	srl $7, $5, 4         /* $7 = $5 >> 4 */	beq $7, $6, 1f        /* test result of srl */	addiu $10, $10, 1     /* if it doesn't match, fail */1:	addiu $4, $0, 4       /* $4 = shift amount */	li $5, 0xa5a5a5a5     /* $5 = test pattern */	li $6, 0xfa5a5a5a     /* $6 = $5 >>> 4 */	srav $7, $5, $4       /* $7 = $5 >>> 4 */	beq $7, $6, 1f        /* test result of srav */	addiu $10, $10, 1     /* if it doesn't match, fail */1:	addiu $4, $0, 4       /* $4 = shift amount */	li $5, 0xa5a5a5a5     /* $5 = test pattern */	li $6, 0xfa5a5a5a     /* $6 = $5 >>> 4 */	sra $7, $5, 4         /* $7 = $5 >>> 4 */	beq $7, $6, 1f        /* test result of sra */	addiu $10, $10, 1     /* if it doesn't match, fail */1:	break	.org 0x180	break

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?