winIDEA SDK
test_get_disassembly.py
1# This script is licensed under BSD License, see file LICENSE.txt.
2#
3# (c) TASKING Germany GmbH, 2023
4
5import isystem.connect as ic
6
7
8winidea_id = ''
9
10
11def test_getDisassembly():
12 connMgr = ic.ConnectionMgr()
13 connMgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
14
15 dataCtrl2 = ic.CDataController2(connMgr)
16
17 # For example purpose, we will show dissassebly data of
18 # main.c file, 10 lines for line 10 and above
19 da = dataCtrl2.getDisassembly(ic.IConnectEclipse.dfSymSymbolsAndValues, "src/main.cpp", 10, 10)
20 try:
21 lines = da.Lines()
22 for index in range(lines.size()):
23 lineData = lines.at(index)
24 lineData: ic.IDisassemblyLine
25 print(' address: ', hex(lineData.Address()))
26 print(' opCode: ', lineData.OpCode())
27 print(' opCodeArgs: ', lineData.OpCodeArgs())
28 print(' fileName: ', lineData.FileName())
29 print(' lineNumber: ', lineData.LineNumber())
30 print(' functionName: ', lineData.FunctionName())
31 print(' isBranch: ', lineData.IsBranch())
32 print(' isCall: ', lineData.IsCall())
33 print(' isIndirect: ', lineData.IsIndirect())
34 print(' isConditional: ', lineData.IsConditional())
35 print(' length: ', lineData.Length())
36 print(' branchTarget: ', hex(lineData.BranchTarget()))
37
38 # NOTE: there are other functions available, explore `ic.IDisassemblyLine` docs
39
40 finally:
41 dataCtrl2.release(da)
42
43
44if __name__ == "__main__":
45 test_getDisassembly()