Advertisement
Guest User

68000 regex code-driver v3

a guest
May 4th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;; easy68k code cause it's easier to test
  2.  
  3. NUM_STATES EQU 64 ;; reserve 64*2 longwords of memory
  4.  
  5.    
  6. NEXT MACRO
  7.     move.w (a0)+, a6
  8.     jmp (a6)
  9.     ENDM
  10.    
  11.    
  12. ;; string to compare regex against
  13. ;; change it for testing
  14. string:
  15.     dc.b 'cd'
  16.    
  17. start:
  18.     ;; load string into a2
  19.     move.l #string, a2
  20.    
  21.  
  22.     jsr setup
  23.    
  24.     ;; add first state, add #swap to the end, and off we go
  25.     ;; this address to be changed if the generated code changes
  26.     move.w #label1034, (a1)+
  27.     move.w #swap, (a1)+
  28.     jmp swap
  29.  
  30.  
  31.    
  32. setup:
  33.     ;; load code buffer pointers into a3,a4
  34.     lea.l buf_a, a3
  35.     lea.l buf_b, a4
  36.     ;; load pointers into a0,a1
  37.     move.l a3, a0
  38.     move.l a4, a1
  39.     rts
  40.    
  41. swap:    
  42.     cmp a4, a1
  43.     beq TRUE_FAIL
  44.     ;; same as the above routine, but swap code buffer pointers
  45.     move.b (a2)+, d0
  46.     ;; swap pointers
  47.     exg a3,a4
  48.     move.l a3, a0
  49.     move.l a4, a1
  50.    
  51.     ;; setup end of memory barrier
  52.     move.l a1, d4
  53.     add.l #NUM_STATES, d4    
  54.     NEXT ;; jump to first state in list
  55.  
  56. EXPENDED_MEMORY:
  57.     jmp EXPENDED_MEMORY
  58.  
  59. FAIL:
  60.     NEXT
  61.    
  62. TRUE_FAIL:
  63.     jmp TRUE_FAIL
  64.    
  65. SUCCESS:
  66.     jmp SUCCESS
  67.    
  68. padding:
  69.     ds.l 128
  70. buf_a:
  71.     ds.l NUM_STATES
  72. buf_b:
  73.     ds.l NUM_STATES
  74.  
  75.  
  76. ;; paste generated regex code here
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement