Create car, cdr and assign AM operations

This commit is contained in:
2025-08-10 21:15:36 +01:00
parent eaef6f3cd3
commit 426d270318
4 changed files with 68 additions and 9 deletions

View File

@@ -36,3 +36,20 @@ void am_append(am_t *am, am_reg_t list_reg, am_reg_t item_reg)
list->pair.car = am->regs[item_reg];
list->pair.cdr = expr_empty_list(am);
}
void am_car(am_t *am, am_reg_t dest, am_reg_t src)
{
assert(!am->regs[src]->is_atom);
am->regs[dest] = am->regs[src]->pair.car;
}
void am_cdr(am_t *am, am_reg_t dest, am_reg_t src)
{
assert(!am->regs[src]->is_atom);
am->regs[dest] = am->regs[src]->pair.cdr;
}
void am_assign(am_t *am, am_reg_t dest, am_reg_t src)
{
am->regs[dest] = am->regs[src];
}