symbol.asm 583 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. %ifndef SYMBOL_ASM
  2. %define SYMBOL_ASM
  3. %include "syscalls.asm"
  4. %include "symbol_table.asm"
  5. section .data
  6. err3_1_ty db "ERROR 3. SYMBOL OOB."
  7. err3_1_len:
  8. section .text
  9. display_symbol:
  10. mov r8, 0b000
  11. call type_check
  12. shr rax, 5
  13. cmp rax, [symbol_table_len]
  14. jge .oobs
  15. mov rsi, [symbol_table + 8*rax]
  16. mov rdx, [symbol_len_table + 8*rax]
  17. movzx rdx, byte [rdx]
  18. mov rax, sys_write
  19. mov rdi, 1
  20. syscall
  21. ret
  22. .oobs:
  23. mov rax, sys_write
  24. mov rdi, 0
  25. mov rsi, err3_1_ty
  26. mov rdx, (err3_1_len - err3_1_ty)
  27. syscall
  28. call nl
  29. mov rax, sys_exit
  30. mov rdi, 1
  31. syscall
  32. %endif