Exemple #1
0
def test_DIV():
    program = '''
        .text
        .global main:
        main:
            LDV A, 30
            LDV B, 10
            DIV A, B
            HLT
    '''
    c = execute_code(program)
    assert c.registers.get(0) == 3
    assert c.registers.get(1) == 10
    # Check that flooring works properly
    program = '''
        .text
        .global main:
        main:
            LDV A, 38
            LDV B, 10
            DIV A, B
            HLT
    '''
    c = execute_code(program)
    assert c.registers.get(0) == 3
    assert c.registers.get(1) == 10
Exemple #2
0
def test_LDV16():
    program = '''
        .text
        .global main:
        main:
            LDV16 A, {value}
            HLT
    '''
    for i in [0, 0xFF, 0xEFF, 0xFFFF]:
        c = execute_code(program.format(value=i))
        assert c.registers.get(0) == i
Exemple #3
0
def test_RSH():
    program = '''
        .text
        .global main:
        main:
            LDV A, 30
            RSH A, 3
            HLT
    '''
    c = execute_code(program)
    assert c.registers.get(0) == 30 >> 3
Exemple #4
0
def test_NOT():
    program = '''
        .text
        .global main:
        main:
            LDV A, 30
            NOT A
            HLT
    '''
    c = execute_code(program)
    assert c.registers.get(0) == 0xFFFF - 30
Exemple #5
0
def test_SWP():
    program = '''
        .text
        .global main:
        main:
            LDV A, 123
            LDV B, 321
            SWP A, B
            HLT
    '''
    c = execute_code(program)
    assert c.registers.get(0) == 321
    assert c.registers.get(1) == 123
Exemple #6
0
def test_JLE():
    program = '''
        .text
        .global main:
            main:
                LDV A, 123
                LDV B, {value}
                LDV C, positive:
                LDV D, 80
                JLE B, C
                LDV C, 321
                HLT
            positive:
                LDV C, 789
                HLT
    '''
    c = execute_code(program.format(value=123))
    assert c.registers._gp == [123, 123, 789, 80]
    c = execute_code(program.format(value=456))
    assert c.registers._gp == [123, 456, 789, 80]
    c = execute_code(program.format(value=12))
    assert c.registers._gp == [123, 12, 321, 80]
Exemple #7
0
def test_MUL():
    program = '''
        .text
        .global main:
        main:
            LDV A, 30
            LDV B, 10
            MUL A, B
            HLT
    '''
    c = execute_code(program)
    assert c.registers.get(0) == 300
    assert c.registers.get(1) == 10
Exemple #8
0
def test_DEC():
    program = '''
        .text
        .global main:
        main:
            LDV A, 30
            DEC A
            DEC A
            DEC B
            HLT
    '''
    c = execute_code(program)
    assert c.registers.get(0) == 28
    assert c.registers.get(1) == 0xFFFF
Exemple #9
0
def test_INC():
    program = '''
        .text
        .global main:
        main:
            LDV A, 30
            INC A
            INC A
            INC B
            HLT
    '''
    c = execute_code(program)
    assert c.registers.get(0) == 32
    assert c.registers.get(1) == 1
Exemple #10
0
def test_JGE():
    program = '''
        .text
        .global main:
            main:
                LDV A, 456
                LDV B, 123
                LDV C, positive:
                JGE B, C
                HLT
            positive:
                LDV C, 789
                HLT
    '''
    c = execute_code(program)
    for reg, val in enumerate([456, 123, 789, 0]):
        assert c.registers.get(reg) == val