diff --git a/nemu/src/utils/elf-parser.c b/nemu/src/utils/elf-parser.c
index 4530b42..d1bd142 100644
--- a/nemu/src/utils/elf-parser.c
+++ b/nemu/src/utils/elf-parser.c
@@ -68,11 +68,6 @@ void init_elf(const char *path) {
     }
   }
   qsort(func_table, func_table_len, sizeof(func_t), cmp_func_t);
-  for(int i = 0; i < func_table_len; i++) {
-    func_t *f = &func_table[i];
-    // puts(func);
-    printf("%s: 0x%x - 0x%x\n", f->name, f->start, f->start + f->len);
-  } 
   success = true;
 failed:
   for(int i = 0; i < func_table_len; i++) {
@@ -87,3 +82,13 @@ failed_nosym:
   if(success) return;
   else Error("Failed reading elf file");
 }
+
+func_t *get_func(vaddr_t addr) {
+  int l = 0, r = func_table_len - 1;
+  while(l < r) {
+    int mid = l + (r - l) / 2;
+    if(func_table[mid].start < addr)  l = mid + 1;
+    else r = mid;
+  }
+  return &func_table[l];
+}