Attic/sier.prs
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 25 Oct 2024 18:54:08 +0100
changeset 971 51e00f223792
parent 710 183663740fb7
permissions -rw-r--r--
updated

val sier = List(
  ArrayDef("mem", 30000),
  Assign("ptr", Num(15000)),
  AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(8))),
  While(
    Bop("!=", Ref("mem", Var("ptr")), Num(0)),
    List(
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(4))),
      Assign("ptr", Aop("-", Var("ptr"), Num(2))),
      AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
      Skip
    )
  ),
  Assign("ptr", Aop("+", Var("ptr"), Num(1))),
  AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))),
  Assign("ptr", Aop("+", Var("ptr"), Num(2))),
  AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
  Assign("ptr", Aop("-", Var("ptr"), Num(1))),
  While(
    Bop("!=", Ref("mem", Var("ptr")), Num(0)),
    List(
      AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
      While(
        Bop("!=", Ref("mem", Var("ptr")), Num(0)),
        List(
          Assign("ptr", Aop("+", Var("ptr"), Num(2))),
          AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
          Assign("ptr", Aop("-", Var("ptr"), Num(2))),
          AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
          Skip
        )
      ),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
      Assign("ptr", Aop("+", Var("ptr"), Num(2))),
      Skip
    )
  ),
  Assign("ptr", Aop("+", Var("ptr"), Num(1))),
  AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
  While(
    Bop("!=", Ref("mem", Var("ptr")), Num(0)),
    List(
      AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
      Assign("ptr", Aop("-", Var("ptr"), Num(3))),
      While(
        Bop("!=", Ref("mem", Var("ptr")), Num(0)),
        List(
          AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
          Assign("ptr", Aop("+", Var("ptr"), Num(1))),
          While(
            Bop("!=", Ref("mem", Var("ptr")), Num(0)),
            List(
              AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
              AssignA("mem", Var("ptr"), Num(0)),
              AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
              Assign("ptr", Aop("+", Var("ptr"), Num(1))),
              AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))),
              Assign("ptr", Aop("+", Var("ptr"), Num(3))),
              AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
              Assign("ptr", Aop("-", Var("ptr"), Num(2))),
              Skip
            )
          ),
          Assign("ptr", Aop("-", Var("ptr"), Num(1))),
          While(
            Bop("!=", Ref("mem", Var("ptr")), Num(0)),
            List(Assign("ptr", Aop("-", Var("ptr"), Num(1))), Skip)
          ),
          Assign("ptr", Aop("+", Var("ptr"), Num(2))),
          AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(6))),
          While(
            Bop("!=", Ref("mem", Var("ptr")), Num(0)),
            List(
              Assign("ptr", Aop("-", Var("ptr"), Num(2))),
              AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(5))),
              Assign("ptr", Aop("+", Var("ptr"), Num(2))),
              AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
              Skip
            )
          ),
          AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
          Assign("ptr", Aop("-", Var("ptr"), Num(2))),
          AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))),
          Assign("x", Ref("mem", Var("ptr"))),
          Write("x"),
          AssignA("mem", Var("ptr"), Num(0)),
          Assign("ptr", Aop("-", Var("ptr"), Num(2))),
          Skip
        )
      ),
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      Assign("x", Ref("mem", Var("ptr"))),
      Write("x"),
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
      While(
        Bop("!=", Ref("mem", Var("ptr")), Num(0)),
        List(Assign("ptr", Aop("+", Var("ptr"), Num(2))), Skip)
      ),
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
      Skip
    )
  ),
  Skip
)