48 lines
1019 B
JavaScript
48 lines
1019 B
JavaScript
|
let fs = require("fs")
|
||
|
let s = fs.readFileSync(process.argv[2], "utf8")
|
||
|
let infun = false
|
||
|
let words = []
|
||
|
for (let l of s.split(/\n/)) {
|
||
|
let m = /^00000000 <(.*)>:/.exec(l)
|
||
|
if (m && m[1] == process.argv[3]) infun = true
|
||
|
if (/^Disassembly/.test(l)) infun = false
|
||
|
if (!infun) continue
|
||
|
m = /^\s*[0-9a-f]+:\s+([0-9a-f]+)( ([0-9a-f]{4}))?\s+/.exec(l)
|
||
|
if (m) {
|
||
|
let n = m[1]
|
||
|
words.push(n)
|
||
|
if (m[3])
|
||
|
words.push(m[3])
|
||
|
if (n.length == 4 || n.length == 8) {
|
||
|
// ok
|
||
|
} else {
|
||
|
throw new Error()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let ww = []
|
||
|
let pref = ""
|
||
|
for (let w of words) {
|
||
|
if (w.length == 8) {
|
||
|
if (pref) throw new Error()
|
||
|
ww.push("0x" + w)
|
||
|
} else {
|
||
|
if (pref) {
|
||
|
ww.push("0x" + w + pref)
|
||
|
pref = ""
|
||
|
} else {
|
||
|
pref = w
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
words = ww
|
||
|
|
||
|
let r = ""
|
||
|
for (let i = 0; i < words.length; i++) {
|
||
|
if (i % 6 == 0) r += "\n"
|
||
|
r += words[i] + ", "
|
||
|
}
|
||
|
|
||
|
console.log(r)
|