MCPcopy Create free account
hub / github.com/LPC4/Full-Stack / parse_branch

Function parse_branch

crates/asm-to-binary/src/assembler/parser.rs:495–509  ·  view source on GitHub ↗

Parse `rs1, rs2, label` for a branch instruction.

(kind: BranchKind, operands: &str)

Source from the content-addressed store, hash-verified

493}
494
495// Parse `"rd, rs"` -> `(rd_reg, rs_reg)`. Used by `mv`.
496fn parse_two_regs(operands: &str) -> Option<(u8, u8)> {
497 let (rd_str, rs_str) = parse_two_fields(operands)?;
498 Some((parse_int_reg(rd_str)?, parse_int_reg(rs_str)?))
499}
500
501// Parse `"rd, rs1, imm"` -> (rd_reg, rs1_reg, imm_i32).
502fn parse_r_i_imm(operands: &str) -> Option<(u8, u8, i32)> {
503 let mut parts = operands.splitn(3, ',');
504 let rd = parse_int_reg(parts.next()?.trim())?;
505 let rs1 = parse_int_reg(parts.next()?.trim())?;
506 let imm = parse_imm_i64(parts.next()?.trim())? as i32;
507 Some((rd, rs1, imm))
508}
509
510// Parse `"rs2, imm(rs1)"` -> (rs2_reg, rs1_reg, imm_i32). Used by stores.
511fn parse_store_mem(operands: &str) -> Option<(u8, u8, i32)> {
512 let comma = operands.find(',')?;

Callers 1

parse_instruction_lineFunction · 0.85

Calls 2

parse_int_regFunction · 0.85
collectMethod · 0.80

Tested by

no test coverage detected