Utilities for dealing with live register analysis in GTIRB functions
Project description
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))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for gtirb-live-register-analysis-0.0.5.post1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95832190f9ab0488f3e9927a9e2c08ecabe0f13e09b5cca003e0962ee1bd608b |
|
MD5 | 4283da0a985b6a30fcfada8e1d27154a |
|
BLAKE2b-256 | ade9b5938b0afca9598e3aef1f8a8f76dd621798eb1aa47362ddc82f6d06228d |
Close
Hashes for gtirb_live_register_analysis-0.0.5.post1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 851fd3fe82ff8db09d87e64bb7bc034f938d52d0a89b24c64c4c2c408e8a56a3 |
|
MD5 | ebc236b63aae4e620234b10f10b3f031 |
|
BLAKE2b-256 | 6b13402aff78733aeeef517d20894d609d4bffd277129c207344f85c2dba8fdb |