winIDEA SDK
Loading...
Searching...
No Matches
disassembly.py
1# This script is licensed under BSD License, see file LICENSE.txt, or search for `License` in the SDK online help.
2#
3# (c) TASKING Germany GmbH, 2023
4
5import isystem.connect as ic
6
7winidea_id = ''
8
9
10def printDisassembly(disassemblyLine):
11 print(' address: ', hex(disassemblyLine.Address()))
12 print(' opCode: ', disassemblyLine.OpCode())
13 print(' opCodeArgs: ', disassemblyLine.OpCodeArgs())
14 print(' fileName: ', disassemblyLine.FileName())
15 print(' lineNumber: ', disassemblyLine.LineNumber())
16 print(' functionName: ', disassemblyLine.FunctionName())
17 print(' isBranch: ', disassemblyLine.IsBranch())
18 print(' isCall: ', disassemblyLine.IsCall())
19 print(' isIndirect: ', disassemblyLine.IsIndirect())
20 print(' isConditional: ', disassemblyLine.IsConditional())
21 print(' length: ', disassemblyLine.Length())
22 print(' branchTarget: ', hex(disassemblyLine.BranchTarget()))
23
24
25
26def main():
27 print('isystem.connect version: ' + ic.getModuleVersion())
28
29 cmgr = ic.ConnectionMgr()
30 cmgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
31
32 debugCtrl = ic.CDebugFacade(cmgr)
33
34 debugCtrl.download()
35 debugCtrl.waitUntilStopped()
36
37 dataCtrl2 = ic.CDataController2(cmgr)
38 disassembly = dataCtrl2.getDisassembly(0, 'src/main.cpp', 36, 5)
39
40 daLines = disassembly.Lines()
41
42 numLines = daLines.size()
43 print('numDisassemblyLines: ', numLines, '\n')
44
45 for idx in range(numLines):
46 disassemblyLine = daLines.at(idx)
47 print('\nline: ', idx, '/', numLines - 1)
48 printDisassembly(disassemblyLine)
49
50 # It is important that we release the allocated resource
51 dataCtrl2.release(disassembly)
52
53
54if __name__ == "__main__":
55 main()