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
9 registers [ H{ } clone ] initialize
11 : define-register ( name num size -- word )
12 [ create-word-in ] 2dip {
14 [ 2drop define-symbol ]
15 [ drop "register" set-word-prop ]
16 [ nip "register-size" set-word-prop ]
19 : (define-registers) ( names start size -- seq )
20 '[ _ + _ define-register ] map-index ;
22 : define-registers ( names size -- )
23 [ [ 0 ] dip (define-registers) ] keep registers get set-at ;
26 scan-number [ ";" parse-tokens ] dip define-registers ;
29 scan-number [ ";" parse-tokens 4 ] dip (define-registers) drop ;