38 lines
1.4 KiB
YAML
38 lines
1.4 KiB
YAML
schema: 1
|
|
card: rv32i-asm/L08
|
|
title: Subroutines and ABI
|
|
steps:
|
|
- id: link-target
|
|
task: task01_link_address
|
|
action: debug
|
|
profile: hazard3-sim
|
|
target: hazard3-baremetal
|
|
command: stemctl debug hazard3-sim rv32i-asm L08 1
|
|
board:
|
|
show: [pc, rs1, immediate, jalr, target, link, waveform]
|
|
highlight: [pc_plus_4, pc_relative_target, jalr_bit_zero]
|
|
question: Dlaczego link jest taki sam dla JAL i JALR przy tym samym PC?
|
|
evidence: [jal_target, jalr_target, link, trace_vcd]
|
|
- id: abi-map
|
|
task: task02_abi_registers
|
|
action: test
|
|
profile: hazard3-sim
|
|
target: hazard3-baremetal
|
|
command: stemctl test hazard3-sim rv32i-asm L08 2
|
|
board:
|
|
show: [register_index, abi_class, class_counts]
|
|
highlight: [arguments, callee_saved, temporaries, fixed]
|
|
question: Które rejestry funkcja wywołana musi odtworzyć przed return?
|
|
evidence: [all_32_classified, class_counts]
|
|
- id: nested-calls
|
|
task: task03_call_stack
|
|
action: debug
|
|
profile: hazard3-sim
|
|
target: hazard3-baremetal
|
|
command: stemctl debug hazard3-sim rv32i-asm L08 3
|
|
board:
|
|
show: [call, ret, link, depth, return_address, underflow, waveform]
|
|
highlight: [push_104, push_204, pop_204, pop_104]
|
|
question: Dlaczego pierwszy return używa adresu 0x204, a nie 0x104?
|
|
evidence: [nested_depth, return_order, underflow, trace_vcd]
|