]> gitweb.factorcode.org Git - factor.git/blob - basis/cpu/x86/assembler/syntax/syntax.factor
Switch to https urls
[factor.git] / basis / cpu / x86 / assembler / syntax / syntax.factor
1 ! Copyright (C) 2008, 2010 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: kernel words words.symbol sequences lexer parser fry
4 namespaces combinators assocs math ;
5 IN: cpu.x86.assembler.syntax
6
7 SYMBOL: registers
8
9 registers [ H{ } clone ] initialize
10
11 : define-register ( name num size -- word )
12     [ create-word-in ] 2dip {
13         [ 2drop ]
14         [ 2drop define-symbol ]
15         [ drop "register" set-word-prop ]
16         [ nip "register-size" set-word-prop ]
17     } 3cleave ;
18
19 : (define-registers) ( names start size -- seq )
20     '[ _ + _ define-register ] map-index ;
21
22 : define-registers ( names size -- )
23     [ [ 0 ] dip (define-registers) ] keep registers get set-at ;
24
25 SYNTAX: REGISTERS:
26     scan-number [ ";" parse-tokens ] dip define-registers ;
27
28 SYNTAX: HI-REGISTERS:
29     scan-number [ ";" parse-tokens 4 ] dip (define-registers) drop ;