1
0
Fork 0
mirror of https://github.com/notwa/mm synced 2024-05-18 05:23:22 -07:00
mm/Lua/lib/classes/Monitor.lua
2016-01-12 16:05:31 -08:00

53 lines
1.0 KiB
Lua

require "serialize"
local Monitor = Class()
function Monitor:init(name, a)
self.name = name
self.begin = a.addr
self.len = a.type
self.once = false
self.old_bytes = {}
self.modified = {}
self.dirty = false
end
function Monitor:read()
local raw = mainmemory.readbyterange(self.begin, self.len)
local bytes = {}
for k, v in pairs(raw) do
bytes[k] = v
end
return bytes
end
function Monitor:diff()
local bytes = self:read()
local old_bytes = self.old_bytes
if self.once then
for i, v in pairs(bytes) do
local x = v
local x1 = old_bytes[i]
if x ~= x1 then
self:mark(i, x, x1)
end
end
end
self.old_bytes = bytes
self.once = true
end
function Monitor:load(fn)
self.modified = deserialize(fn) or {}
self.dirty = false
self.fn = fn
end
function Monitor:save(fn)
if self.dirty then
serialize(fn or self.fn, self.modified)
self.dirty = false
end
end
return Monitor