feat(L07): add addresses and memory card
This commit is contained in:
Executable
+33
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
|
||||
|
||||
def task01():
|
||||
pc, imm20 = 0x100, 0x12345
|
||||
upper = imm20 << 12
|
||||
assert upper == 0x12345000 and (pc + upper) & 0xFFFFFFFF == 0x12345100
|
||||
print("PASS task01 lui=12345000 auipc=12345100")
|
||||
|
||||
|
||||
def task02():
|
||||
ram = [0] * 16
|
||||
ram[0], ram[1] = 0x11223344, 0xAABBCCDD
|
||||
before = list(ram)
|
||||
misaligned = (2 & 3) != 0
|
||||
assert ram[0] == 0x11223344 and ram[1] == 0xAABBCCDD and misaligned and ram == before
|
||||
print("PASS task02 word0=11223344 word1=aabbccdd misaligned=1")
|
||||
|
||||
|
||||
def task03():
|
||||
base, immediate = 0x20, 12
|
||||
address = (base + immediate) & 0xFFFFFFFF
|
||||
ram = {address: 0xDEADBEEF}
|
||||
fault = ((base + 2) & 3) != 0
|
||||
assert address == 0x2C and ram[address] == 0xDEADBEEF and fault
|
||||
print("PASS task03 address=0000002c load=deadbeef fault=1")
|
||||
|
||||
|
||||
TASKS = {"task01_upper_immediate": task01, "task02_word_ram": task02, "task03_address_memory_path": task03}
|
||||
if len(sys.argv) != 2 or sys.argv[1] not in TASKS:
|
||||
raise SystemExit(f"usage: {sys.argv[0]} {'|'.join(TASKS)}")
|
||||
TASKS[sys.argv[1]]()
|
||||
Reference in New Issue
Block a user