Static code segment search for memscan.lua

develop
Warmist 2012-09-01 10:05:31 +03:00
parent c9c587af9a
commit d784d4bc40
1 changed files with 30 additions and 0 deletions

@ -195,6 +195,36 @@ function MemoryArea:delete()
for k,v in pairs(self) do self[k] = nil end
end
-- Static code segment search
local function find_code_segment()
local code_start, code_end
for i,mem in ipairs(dfhack.internal.getMemRanges()) do
if code_end then
if mem.start_addr == code_end and mem.read and not mem.write then
code_end = mem.end_addr
else
break
end
elseif mem.read and not mem.write
and (string.match(mem.name,'/dwarfort%.exe$')
or string.match(mem.name,'/Dwarf_Fortress$')
or string.match(mem.name,'Dwarf Fortress%.exe'))
then
code_start = mem.start_addr
code_end = mem.end_addr
end
end
return code_start,code_end
end
function get_code_segment()
local s, e = find_code_segment()
if s and e then
return ms.MemoryArea.new(s, e)
end
end
-- Static data segment search
local function find_data_segment()