Exemplo n.º 1
0
def test_assembler_modifiers():
    source = """
    ADDR = 0x20000000

    addi zero zero 0
    addi zero zero 0
    addi zero zero 0

    main:
        # without nestable exprs under hi / lo
        lui t0 %hi ADDR
        addi t0 t0 %lo(ADDR)
        addi t0 t0 main
    
        # with nestable exprs under hi / lo
        lui t0 %hi %position main ADDR
        addi t0 t0 %lo(%position(main, ADDR))
    """
    binary = asm.assemble(source)
    target = b''.join([
        asm.ADDI(0, 0, 0),
        asm.ADDI(0, 0, 0),
        asm.ADDI(0, 0, 0),
        asm.LUI('t0', asm.relocate_hi(0x20000000)),
        asm.ADDI('t0', 't0', asm.relocate_lo(0x20000000)),
        asm.ADDI('t0', 't0', 12),
        asm.LUI('t0', asm.relocate_hi(0x20000000 + 12)),
        asm.ADDI('t0', 't0', asm.relocate_lo(0x20000000 + 12)),
    ])
    assert binary == target
Exemplo n.º 2
0
def test_relocate_hi_lo_sum(value):
    hi = asm.relocate_hi(value)
    lo = asm.relocate_lo(value)
    expected = asm.sign_extend(value, 32)

    sum_raw = (hi << 12) + lo
    sum_wrapped = c_int32(sum_raw).value
    assert sum_wrapped == expected
Exemplo n.º 3
0
def test_relocate_lo(value, expected):
    assert asm.relocate_lo(value) == expected