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 + -
显示快捷键?