diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2016-03-07 23:09:21 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2016-03-07 23:09:21 +0200 |
commit | 13927d9dec274f6c188005a9d87e097e225a1799 (patch) | |
tree | 902ca522332e2266c6d46f73ea86dba59cb73fa5 | |
parent | 5f4505729ff5677d62495dcc78acf7eedfc1c90d (diff) | |
download | egawk-13927d9dec274f6c188005a9d87e097e225a1799.tar.gz egawk-13927d9dec274f6c188005a9d87e097e225a1799.tar.bz2 egawk-13927d9dec274f6c188005a9d87e097e225a1799.zip |
helpers/fixdump.awk: Convert to Unix line endings.
-rw-r--r-- | helpers/ChangeLog | 1 | ||||
-rw-r--r-- | helpers/fixdump.awk | 142 |
2 files changed, 72 insertions, 71 deletions
diff --git a/helpers/ChangeLog b/helpers/ChangeLog index ed6b7adc..7ffbe62e 100644 --- a/helpers/ChangeLog +++ b/helpers/ChangeLog @@ -2,6 +2,7 @@ * fixdump.awk (translate): Remove extraneous spaces in prints of code targets. + * fixdump.awk: Convert to normal Unix line endings. 2015-08-28 Daniel Richard G. <skunk@iSKUNK.ORG> diff --git a/helpers/fixdump.awk b/helpers/fixdump.awk index d0190969..3ec502d2 100644 --- a/helpers/fixdump.awk +++ b/helpers/fixdump.awk @@ -1,71 +1,71 @@ -#! /usr/bin/gawk -f
-
-BEGIN {
- address_re = "0x[[:xdigit:]]+"
- bracketed_address = "\\[(([[:space:]]*[[:digit:]]*:)?|[[:alpha:]_]+ = )0x[[:xdigit:]]+\\]"
-}
-
-{
- line[NR] = $0
- extract_addresses($0, NR)
-}
-
-END {
- for (i = 1; i <= NR; i++) {
- if (line[i] !~ address_re) {
- print line[i]
- continue
- }
-
- translate(line[i])
- }
-}
-
-# Global arrays
-#
-# Address[line] --- Address of instruction - first hex number
-# Target[address] = 1 --- Address is target of a jump
-# Newaddr[address] --- Replacement address, counting from 1
-
-function extract_addresses(line, num, data, i, n, seps, addr)
-{
- if (line !~ address_re)
- return
-
- split(line, data, bracketed_address, seps)
- n = length(seps)
-
- for (i = 1; i <= n; i++) {
- addr = gensub(".*(" address_re ").*", "\\1", 1, seps[i])
- if (i == 1)
- Address[num] = addr
- else {
- Target[addr]++
- if (! (addr in Newaddr))
- Newaddr[addr] = new_address()
- }
- }
-}
-
-function new_address()
-{
- return sprintf("%8d", ++Address_seed)
-}
-
-function translate(line, n, data, seps, i, newline)
-{
- split(line, data, address_re, seps)
- n = length(seps)
- newline = line
- for (i = 1; i <= n; i++) {
- if (! (seps[i] in Target)) {
- gsub(seps[i], " ", newline)
- continue
- }
- gsub(seps[i], Newaddr[seps[i]], newline)
- }
-
- gsub(/ = +/, " = ", newline)
-
- print newline
-}
+#! /usr/bin/gawk -f + +BEGIN { + address_re = "0x[[:xdigit:]]+" + bracketed_address = "\\[(([[:space:]]*[[:digit:]]*:)?|[[:alpha:]_]+ = )0x[[:xdigit:]]+\\]" +} + +{ + line[NR] = $0 + extract_addresses($0, NR) +} + +END { + for (i = 1; i <= NR; i++) { + if (line[i] !~ address_re) { + print line[i] + continue + } + + translate(line[i]) + } +} + +# Global arrays +# +# Address[line] --- Address of instruction - first hex number +# Target[address] = 1 --- Address is target of a jump +# Newaddr[address] --- Replacement address, counting from 1 + +function extract_addresses(line, num, data, i, n, seps, addr) +{ + if (line !~ address_re) + return + + split(line, data, bracketed_address, seps) + n = length(seps) + + for (i = 1; i <= n; i++) { + addr = gensub(".*(" address_re ").*", "\\1", 1, seps[i]) + if (i == 1) + Address[num] = addr + else { + Target[addr]++ + if (! (addr in Newaddr)) + Newaddr[addr] = new_address() + } + } +} + +function new_address() +{ + return sprintf("%8d", ++Address_seed) +} + +function translate(line, n, data, seps, i, newline) +{ + split(line, data, address_re, seps) + n = length(seps) + newline = line + for (i = 1; i <= n; i++) { + if (! (seps[i] in Target)) { + gsub(seps[i], " ", newline) + continue + } + gsub(seps[i], Newaddr[seps[i]], newline) + } + + gsub(/ = +/, " = ", newline) + + print newline +} |