gensym.krk 659 B

1234567891011121314151617181920212223242526272829303132
  1. #!/usr/bin/env kuroko
  2. '''
  3. @brief Generate symbol table.
  4. '''
  5. import fileio
  6. let size = 'quad'
  7. def extern(sym):
  8. print(f'.extern {sym}')
  9. print(f'.type {sym}, @function')
  10. def entry(sym):
  11. print(f'.{size} {sym}')
  12. print(f'.asciz "{sym}"')
  13. let ignore = ['abs','kernel_symbols_start','kernel_symbols_end']
  14. let lines = [x.strip().split(' ')[2] for x in fileio.stdin.readlines() if x not in ignore]
  15. print('.section .symbols')
  16. print()
  17. for name in lines:
  18. extern(name)
  19. print('.global kernel_symbols_start')
  20. print('kernel_symbols_start:')
  21. print()
  22. for name in lines:
  23. entry(name)
  24. print('.global kernel_symbols_end')
  25. print('kernel_symbols_end:')