在python程序中,我解析了一個二進制文件來爲它構建符號表。然後,我想將地址關聯到符號。現在我的符號表是由地址,長度和名稱組成的Symbol
對象的排序列表,並且符號查找天真地遍歷符號。查找在於發現其中的符號包含給定的地址,換句話說:哪個數據結構用於符號表?
addr >= symbol.addr and addr < symbol.addr + symbol.length
因爲我分析的程序變得非常大,我對着表演的擔憂,並尋找更有效的(在以下方面複雜)解決方案。我看了一下bisect
包,這是在這種情況下使用的正確包嗎?你將如何實現?
'bisect'只是二進制搜索,這可能不是,除非你的符號有用表已排序。你在符號表中做什麼樣的查找?你可以使用一個將符號名稱映射到符號對象的字典嗎? – Blender
@Blender我編輯了我的問題來澄清。 –
@Blender no我不能,因爲我的查找包含inf找到哪個符號「包含」一個給定的地址,如編輯的問題所示 –