On this page:
asm-lang-v2
asm-lang-v2?
interp-asm-lang-v2
asm-lang-v2/  locals
asm-lang-v2/  locals?
interp-asm-lang-v2/  locals
asm-lang-v2/  assignments
asm-lang-v2/  assignments?
interp-asm-lang-v2/  assignments
nested-asm-lang-v2
nested-asm-lang-v2?
interp-nested-asm-lang-v2
para-asm-lang-v2
para-asm-lang-v2?
interp-para-asm-lang-v2
paren-x64-fvars-v2
paren-x64-fvars-v2?
interp-paren-x64-fvars-v2
paren-x64-v2
paren-x64-v2?
interp-paren-x64-v2
8.10
3.1.2 v2 Languages

 (require cpsc411/langs/v2) package: cpsc411-lib

asm-lang-v2 : grammar?

  p ::= (module info tail)
     
  info ::= info?
     
  tail ::= (halt triv)
  | (begin effect ... tail)
     
  effect ::= (set! aloc triv)
  | (set! aloc_1 (binop aloc_1 triv))
  | (begin effect ... effect)
     
  triv ::= int64
  | aloc
     
  binop ::= *
  | +
     
  aloc ::= aloc?
     
  int64 ::= int64?

procedure

(asm-lang-v2? a)  boolean?

  a : any/c
Decides whether a is a valid program in the asm-lang-v2 grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.

procedure

(interp-asm-lang-v2 a)  any/c

  a : asm-lang-v2?
Evaluates a asm-lang-v2 program to a value.

asm-lang-v2/locals : grammar?

  p ::= (module info tail)
     
  info ::= (#:from-contract (info/c (locals (aloc ...))))
     
  tail ::= (halt triv)
  | (begin effect ... tail)
     
  effect ::= (set! aloc triv)
  | (set! aloc_1 (binop aloc_1 triv))
  | (begin effect ... effect)
     
  triv ::= int64
  | aloc
     
  binop ::= *
  | +
     
  aloc ::= aloc?
     
  int64 ::= int64?

procedure

(asm-lang-v2/locals? a)  boolean?

  a : any/c
Decides whether a is a valid program in the asm-lang-v2/locals grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.
Evaluates a asm-lang-v2/locals program to a value.
  p ::= (module info tail)
     
  info ::= (#:from-contract (info/c (locals (aloc ...)) (assignment ((aloc loc) ...))))
     
  tail ::= (halt triv)
  | (begin effect ... tail)
     
  effect ::= (set! aloc triv)
  | (set! aloc_1 (binop aloc_1 triv))
  | (begin effect ... effect)
     
  triv ::= int64
  | aloc
     
  loc ::= reg
  | fvar
     
  reg ::= rsp
  | rbp
  | rax
  | rbx
  | rcx
  | rdx
  | rsi
  | rdi
  | r8
  | r9
  | r12
  | r13
  | r14
  | r15
     
  binop ::= *
  | +
     
  aloc ::= aloc?
     
  int64 ::= int64?
     
  fvar ::= fvar?

procedure

(asm-lang-v2/assignments? a)  boolean?

  a : any/c
Decides whether a is a valid program in the asm-lang-v2/assignments grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.
Evaluates a asm-lang-v2/assignments program to a value.

nested-asm-lang-v2 : grammar?

  p ::= tail
     
  tail ::= (halt triv)
  | (begin effect ... tail)
     
  effect ::= (set! loc triv)
  | (set! loc_1 (binop loc_1 triv))
  | (begin effect ... effect)
     
  triv ::= int64
  | loc
     
  loc ::= reg
  | fvar
     
  reg ::= rsp
  | rbp
  | rax
  | rbx
  | rcx
  | rdx
  | rsi
  | rdi
  | r8
  | r9
  | r12
  | r13
  | r14
  | r15
     
  binop ::= *
  | +
     
  int64 ::= int64?
     
  fvar ::= fvar?

procedure

(nested-asm-lang-v2? a)  boolean?

  a : any/c
Decides whether a is a valid program in the nested-asm-lang-v2 grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.
Evaluates a nested-asm-lang-v2 program to a value.

para-asm-lang-v2 : grammar?

  p ::= (begin effect ... (halt triv))
     
  effect ::= (set! loc triv)
  | (set! loc_1 (binop loc_1 triv))
     
  triv ::= int64
  | loc
     
  loc ::= reg
  | fvar
     
  reg ::= rsp
  | rbp
  | rax
  | rbx
  | rcx
  | rdx
  | rsi
  | rdi
  | r8
  | r9
  | r12
  | r13
  | r14
  | r15
     
  binop ::= *
  | +
     
  int64 ::= int64?
     
  fvar ::= fvar?

procedure

(para-asm-lang-v2? a)  boolean?

  a : any/c
Decides whether a is a valid program in the para-asm-lang-v2 grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.

procedure

(interp-para-asm-lang-v2 a)  any/c

  a : para-asm-lang-v2?
Evaluates a para-asm-lang-v2 program to a value.

paren-x64-fvars-v2 : grammar?

  p ::= (begin s ...)
     
  s ::= (set! fvar int32)
  | (set! fvar reg)
  | (set! reg loc)
  | (set! reg triv)
  | (set! reg_1 (binop reg_1 int32))
  | (set! reg_1 (binop reg_1 loc))
     
  triv ::= reg
  | int64
     
  loc ::= reg
  | fvar
     
  reg ::= rsp
  | rbp
  | rax
  | rbx
  | rcx
  | rdx
  | rsi
  | rdi
  | r8
  | r9
  | r10
  | r11
  | r12
  | r13
  | r14
  | r15
     
  binop ::= *
  | +
     
  int64 ::= int64?
     
  int32 ::= int32?
     
  fvar ::= fvar?

procedure

(paren-x64-fvars-v2? a)  boolean?

  a : any/c
Decides whether a is a valid program in the paren-x64-fvars-v2 grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.
Evaluates a paren-x64-fvars-v2 program to a value.

paren-x64-v2 : grammar?

  p ::= (begin s ...)
     
  s ::= (set! addr int32)
  | (set! addr reg)
  | (set! reg loc)
  | (set! reg triv)
  | (set! reg_1 (binop reg_1 int32))
  | (set! reg_1 (binop reg_1 loc))
     
  triv ::= reg
  | int64
     
  loc ::= reg
  | addr
     
  reg ::= rsp
  | rbp
  | rax
  | rbx
  | rcx
  | rdx
  | rsi
  | rdi
  | r8
  | r9
  | r10
  | r11
  | r12
  | r13
  | r14
  | r15
     
  addr ::= (fbp - dispoffset)
     
  fbp ::= frame-base-pointer-register?
     
  binop ::= *
  | +
     
  int64 ::= int64?
     
  int32 ::= int32?
     
  dispoffset ::= dispoffset?

procedure

(paren-x64-v2? a)  boolean?

  a : any/c
Decides whether a is a valid program in the paren-x64-v2 grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.

procedure

(interp-paren-x64-v2 a)  any/c

  a : paren-x64-v2?
Evaluates a paren-x64-v2 program to a value.