gtirb-live-register-analysis
Overview
The gtirb-live-register-analysis package provides a Python API for live register analysis of GTIRB functions. A simple interface is also provided for working with gtirb-rewriting patches.
Supported ABIs
| ISA | File Format |
|---|---|
| X64 (x86-64) | ELF |
Getting Started
Generic Usage
from gtirb_live_register_analysis import LiveRegisterManager
reg_manager = LiveRegisterManager(module)
# Analyze function of interest
reg_manager.analyze(function)
# The sets of live and free registers can then be retrieved
live_regs = reg_manager.live_registers(function, block, instruction_idx)
free_regs = reg_manager.free_registers(function, block, instruction_idx)
Use with gtirb-rewriting patches
Wrap the decorator function around a patch function to assign free registers to be used as scratch registers. When there are not enough free registers, the library falls back to gtirb-rewriting, which generates code to spill/restore the excess registers to stack.
@reg_manager.allocate_registers(function, block, instruction_idx)
@patch_constraints(x86_syntax=X86Syntax.INTEL, scratch_registers=6)
def my_patch(self, ctx: InsertionContext):
reg1, reg2, reg3, reg4, reg5, reg6 = ctx.scratch_registers
return f"""
xor {reg1}, {reg1}
xor {reg2}, {reg2}
xor {reg3}, {reg3}
xor {reg4}, {reg4}
xor {reg5}, {reg5}
xor {reg6}, {reg6}
"""
rewriting_ctx.insert_at(block, offset, Patch.from_function(my_patch))
Release files for gtirb-live-register-analysis 0.0.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gtirb-live-register-analysis-0.0.10.tar.gz | 17.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gtirb_live_register_analysis-0.0.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.6 kB
Release files / gtirb-live-register-analysis-0.0.10.tar.gz
| Download URL | gtirb-live-register-analysis-0.0.10.tar.gz |
|---|---|
| Size | 17.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9dcbd921c92139ba3bab3ac7d0e69a5ec324ab16d67e6a3c3ef041e8ac5bd1bd
|
|
BLAKE2b-256 checksum How to use checksums |
d4f4fea508f6a594596b9068044f85ccd8c6cafab7d0dc163e4ecdb27f1bdfbe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / gtirb_live_register_analysis-0.0.10-py3-none-any.whl
| Download URL | gtirb_live_register_analysis-0.0.10-py3-none-any.whl |
|---|---|
| Size | 19.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5ad0d569d6eb6c55976e9b1a4c066e51ead925f20477153a403f59f6304caaa2
|
|
BLAKE2b-256 checksum How to use checksums |
37524aad20ed0f7038271d2c3268231643e3b8882eed689a41725f1994478089
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|