Mercurial > lcfOS
view python/target/arm.brg @ 332:87feb8a23b4d
Added task list command
author | Windel Bouwman |
---|---|
date | Fri, 07 Feb 2014 12:51:55 +0100 |
parents | e9fe6988497c |
children | d1ecc493384e |
line wrap: on
line source
from target.basetarget import Label, Comment, Alignment, LabelRef, DebugInfo, Nop from target.arminstructions import Orr, Lsl, Str2, Ldr2, Ldr3 from target.arminstructions import B, Bl, Bgt, Blt, Beq, Bne from target.arminstructions import Mov2, Mov3 from target.arminstructions import Add, Sub, Cmp, Sub2, Add2, Mul %% %terminal ADDI32 SUBI32 MULI32 %terminal ORI32 SHLI32 %terminal CONSTI32 MEMI32 REGI32 CALL %terminal MOVI32 %% reg: ADDI32(reg, reg) 2 (. d = self.newTmp(); self.emit(Add, dst=[d], src=[$1, $2]); return d .) reg: SUBI32(reg, reg) 2 (. d = self.newTmp(); self.emit(Sub, dst=[d], src=[$1, $2]); return d .) reg: ORI32(reg, reg) 2 (. d = self.newTmp(); self.selector.move(d, $1); self.emit(Orr, dst=[], src=[d, $2]); return d .) reg: SHLI32(reg, reg) 2 (. d = self.newTmp(); self.selector.move(d, $1); self.emit(Lsl, dst=[], src=[d, $2]); return d .) reg: MULI32(reg, reg) 2 (. d = self.newTmp(); self.selector.move(d, $1); self.emit(Mul, dst=[d], src=[$2, d]); return d .) reg: CONSTI32 3 (. d = self.newTmp(); ln = LabelRef(self.selector.frame.addConstant($$.value)); self.emit(Ldr3, dst=[d], others=[ln]); return d .) reg: MEMI32(reg) 4 (. d = self.newTmp(); self.emit(Ldr2, dst=[d], src=[$1], others=[0]); return d .) reg: REGI32 1 (. return $$.value .) reg: CALL 1 (. return self.selector.munchCall($$.value) .) stmt: MOVI32(MEMI32(addr), reg) 3 (. self.emit(Str2, src=[$1, $2]) .) addr: reg 2 (. .)