Skip to content

Commit 6801403

Browse files
committed
Added Program#free_register (closes #57).
1 parent 5b8ce61 commit 6801403

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

lib/ronin/asm/program.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,21 @@ def allocate_register(name)
219219
@allocated_registers << name
220220
end
221221

222+
#
223+
# Mark the register as de-allocated.
224+
#
225+
# @param [Symbol] name
226+
# The register name.
227+
#
228+
# @return [Set<Symbol>]
229+
# The set of allocated registers.
230+
#
231+
# @since 1.0.0
232+
#
233+
def free_register(name)
234+
@allocated_registers.delete(name)
235+
end
236+
222237
#
223238
# Accesses a register.
224239
#

spec/program_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,19 @@
197197
end
198198
end
199199

200+
describe "#free_register" do
201+
let(:name) { :ebx }
202+
203+
before do
204+
subject.allocate_register(name)
205+
subject.free_register(name)
206+
end
207+
208+
it "must remove the register name to #allocated_registers" do
209+
expect(subject.allocated_registers).to_not include(name)
210+
end
211+
end
212+
200213
describe "#register" do
201214
it "must return a Register" do
202215
expect(subject.register(:eax)).to be_kind_of(Ronin::ASM::Register)

0 commit comments

Comments
 (0)