Releases: dzonerzy/gopcode
Release list
GoPCode 0.1.3
π GoPCode 0.1.3 includes:
- 2.15x Performance improvement π₯
We got an overall performance increase of 2.15x with a memory allocation reduction of 12x and a memory allocation size reduction of 12.1x
Before:
pkg: github.com/dzonerzy/gopcode
cpu: AMD Ryzen 7 7800X3D 8-Core Processor
BenchmarkTranslate-16 211861 5850 ns/op 7160 B/op 108 allocs/op
After:
pkg: github.com/dzonerzy/gopcode
cpu: AMD Ryzen 7 7800X3D 8-Core Processor
BenchmarkTranslate-16 400641 2719 ns/op 592 B/op 9 allocs/op
With the next release I plan to optimize also the C side (libpcode_c) to achieve a total speed increase of 5x .
Full Changelog: 0.1.2...0.1.3
GoPCode 0.1.2
π GoPCode 0.1.2 includes:
- Support for darwin arm64 (MacOS m-series) thanks to @JJJJJJack
- Fix for multiple memory leaks thanks to @JJJJJJack
What's Changed
- Some fixes along with OSX darwin support by @JJJJJJack in #1
New Contributors
- @JJJJJJack made their first contribution in #1
Full Changelog: 0.1.1...0.1.2
GoPCode 0.1.1
GoPCode 0.1.1 includes:
- Support for pretty printing lifted P-Code
A new API was created for the PcodeTranslation named Format and can be used like this:
trans, err := ctx.Translate(b, 0x401000, 1024, 0)
if err != nil {
log.Fatalf("failed to translate: %v", err)
}
defer trans.Destroy()
for _, op := range trans.Ops {
fmt.Println(trans.Format(op))
}You can then expect something similar
IMARK ram[401000:4]
unique[4400:8] = RCX + 0x10
unique[db80:8] = *[const]unique[4400:8]
RAX = unique[db80:8]
IMARK ram[401004:1]
RIP = *[const]RSP
RSP = RSP + 0x8
return RIP
Full Changelog: 0.1.0...0.1.1
GoPCode 0.1.0
π This is the first release of GoPCode , it includes:
- Support for translating bytes to Ghidra P-Code
- Support for disassemble bytes to assembly code
Keep in mind the binary files are quite big, in order to make them portable the full Ghidra processor filesystem is embedded inside the library.