43 lines
1.0 KiB
Racket
43 lines
1.0 KiB
Racket
#lang racket
|
|
|
|
(provide
|
|
(struct-out Label)
|
|
(struct-out Var)
|
|
(struct-out Reg)
|
|
(struct-out Imm)
|
|
(struct-out LMov)
|
|
(struct-out AMOffset)
|
|
(struct-out Ldr)
|
|
(struct-out Str)
|
|
(struct-out Add)
|
|
(struct-out Sub)
|
|
(struct-out RetDefault)
|
|
(struct-out Svc)
|
|
(struct-out Bl))
|
|
|
|
(require racket/struct)
|
|
|
|
(struct AArch64VarProgram (info labeled-seq) #:transparent)
|
|
(struct Label (label) #:transparent)
|
|
(struct Var (var-name) #:transparent)
|
|
(struct Reg (reg-name) #:transparent)
|
|
(struct Imm (immediate) #:transparent)
|
|
(struct LMov (src dest) #:transparent)
|
|
(struct AMOffset (base-reg offset) #:transparent)
|
|
(struct Ldr (src dest) #:transparent)
|
|
(struct Str (src dest) #:transparent)
|
|
(struct Add (op1 op2 dest) #:transparent)
|
|
(struct Sub (op1 op2 dest) #:transparent)
|
|
(struct RetDefault () #:transparent)
|
|
(struct Svc (i) #:transparent)
|
|
(struct Bl (label) #:transparent)
|
|
|
|
(define valid-reg-names
|
|
'(x0 x1 x2 x3 x4 x5 x6
|
|
x7 x8 x9 x10 x11 x12
|
|
x13 x14 x15 x16 x17 x18
|
|
x19 x20 x21 x22 x23 x24
|
|
x25 x26 x27 x28 x29 x30
|
|
sp pc xzr))
|
|
|