差異失敗,因爲程序集列表中填充的標籤略有不同。如何比較兩個相似的g ++ -S彙編輸出?
0
A
回答
5
不是直接比較-S
選項生成的彙編列表,而是可以編譯爲目標文件,反彙編目標文件,然後比較這些文件。 (或者,你可以直接對編譯目標代碼的hexdump進行差異化處理,但這更加痛苦)。這消除了大多數標籤,所以它應該可以更容易地與diff進行比較。例如:
g++ file1.cc -c -o file1.o
g++ file2.cc -c -o file2.o
objdump -d file1.o > file1.s
objdump -d file2.o > file2.s
diff file1.s file2.s
0
您可以用一個簡單的sed去除標籤,並用「標籤」或空格替換它們(並使用「diff -w」)。
這將不會說明使用了不同寄存器但操作相同的地方。這可能非常常見,向函數添加變量可能會導致在與代碼無關的位置重新分配寄存器。
處理這個問題的唯一方法是編寫一個程序來專門查找和處理這些情況。我認爲你不會找到任何可以在所有條件下工作的「簡單」解決方案。
相關問題
- 1. 比較兩個NSStrings的相似度
- 2. G ++ -S不在Linux中輸出彙編文件
- 3. 比較兩個整數的相似
- 4. 比較兩個SQL輸出
- 5. 如何比較python中兩個相似的句子字符串?
- 6. 如何比較兩個具有相似內容的文件
- 7. 公制比較如何相似的兩個二維線性線
- 8. 如何比較兩個樹狀圖(R中)的「相似性」?
- 9. 比較兩個相似的,不相同的NLTK樹
- 10. 紅寶石比較兩個字符串的相似百分比
- 11. 比較兩個greps的輸出
- 12. 比較2個陣列的相似度
- 13. 如何在比較兩條相似的行時找到差異
- 14. 比較兩個文件並獲得相同行的輸出
- 15. 比較兩個字符串並返回最相似的一個
- 16. 我如何從比賽(\ S \ d +)\ s每個lsof的輸出線
- 17. C++比較兩個相似陣列的長度
- 18. 爲什麼是s/^ \ s + | \ s + $ // g;比兩個單獨的替換慢得多?
- 19. 彙編語言:如何比較8086中的輸入號碼?
- 20. Python比較兩個字符串的相似性列表
- 21. 比較兩個圖表並獲得相似度百分比
- 22. 比較兩個CSV文件並搜索相似的項目
- 23. JSoup - 如何比較兩張表的相似度
- 24. gcc彙編輸出
- 25. AWK - 比較兩個文件 - 如果Field1相同,比較行
- 26. 比較列表相似的Python
- 27. 比較兩個文件並打印相似的行
- 28. 比較兩個字符串與開始時的彙編錯誤
- 29. 比較兩個varchar字段的相似性
- 30. 比較兩個向量字符串的相似性C++