1
0
Fork 0
mirror of https://github.com/notwa/lips synced 2024-11-14 19:49:02 -08:00

ensure labels exist

This commit is contained in:
Connor Olding 2015-12-17 07:22:43 -08:00
parent f12fec5094
commit b60ca90873

View file

@ -1350,12 +1350,18 @@ function Dumper:desym(tok)
elseif all_registers[tok] then elseif all_registers[tok] then
return registers[tok] or fpu_registers[tok] return registers[tok] or fpu_registers[tok]
elseif tok[1] == 'LABELSYM' then elseif tok[1] == 'LABELSYM' then
local label = self.labels[tok[2]]
if label == nil then
self:error('undefined label')
end
local offset = self.options.offset or 0 local offset = self.options.offset or 0
return self.labels[tok[2]] + offset return label + offset
elseif tok[1] == 'LABELREL' then elseif tok[1] == 'LABELREL' then
-- TODO: ensure label exists local label = self.labels[tok[2]]
local rel = floor(self.labels[tok[2]]/4) if label == nil then
rel = rel - 1 - floor(self.pos/4) self:error('undefined label')
end
local rel = floor(label/4) - 1 - floor(self.pos/4)
if rel > 0x8000 or rel <= -0x8000 then if rel > 0x8000 or rel <= -0x8000 then
self:error('branch too far') self:error('branch too far')
end end