esp32emu / tools /sym.mjs
HelloSun's picture
ESP32 emulator update
d8afd6f verified
Raw History Blame Contribute Delete
627 Bytes
import fs from 'fs';
export class Syms {
constructor(files) { this.a = []; for (const f of files) for (const l of fs.readFileSync(f, 'utf8').split('\n')) { const m = l.match(/^([0-9a-f]+) \w (.*)$/); if (m) this.a.push([parseInt(m[1], 16), m[2]]); } this.a.sort((x, y) => x[0] - y[0]); }
name(addr) { addr >>>= 0; let lo = 0, hi = this.a.length - 1, best = -1; while (lo <= hi) { const mid = (lo + hi) >> 1; if (this.a[mid][0] <= addr) { best = mid; lo = mid + 1; } else hi = mid - 1; } if (best < 0) return '?'; const [a, n] = this.a[best]; if (addr - a > 0x4000) return '?'; return n + '+' + (addr - a).toString(16); }
}