Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;; easy68k code cause it's easier to test
- NUM_STATES EQU 64 ;; reserve 64*2 longwords of memory
- NEXT MACRO
- move.w (a0)+, a6
- jmp (a6)
- ENDM
- ;; string to compare regex against
- ;; change it for testing
- string:
- dc.b 'cd'
- start:
- ;; load string into a2
- move.l #string, a2
- jsr setup
- ;; add first state, add #swap to the end, and off we go
- ;; this address to be changed if the generated code changes
- move.w #label1034, (a1)+
- move.w #swap, (a1)+
- jmp swap
- setup:
- ;; load code buffer pointers into a3,a4
- lea.l buf_a, a3
- lea.l buf_b, a4
- ;; load pointers into a0,a1
- move.l a3, a0
- move.l a4, a1
- rts
- swap:
- cmp a4, a1
- beq TRUE_FAIL
- ;; same as the above routine, but swap code buffer pointers
- move.b (a2)+, d0
- ;; swap pointers
- exg a3,a4
- move.l a3, a0
- move.l a4, a1
- ;; setup end of memory barrier
- move.l a1, d4
- add.l #NUM_STATES, d4
- NEXT ;; jump to first state in list
- EXPENDED_MEMORY:
- jmp EXPENDED_MEMORY
- FAIL:
- NEXT
- TRUE_FAIL:
- jmp TRUE_FAIL
- SUCCESS:
- jmp SUCCESS
- padding:
- ds.l 128
- buf_a:
- ds.l NUM_STATES
- buf_b:
- ds.l NUM_STATES
- ;; paste generated regex code here
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement