winIDEA SDK
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
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
25print('isystem.connect version: ' + ic.getModuleVersion())
26
27cmgr = ic.ConnectionMgr()
28cmgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
29
30debugCtrl = ic.CDebugFacade(cmgr)
31
32debugCtrl.download()
33debugCtrl.waitUntilStopped()
34
35dataCtrl2 = ic.CDataController2(cmgr)
36disassembly = dataCtrl2.getDisassembly(0, 'src/main.cpp', 36, 5)
37
38daLines = disassembly.Lines()
39
40numLines = daLines.size()
41print('numDisassemblyLines: ', numLines, '\n')
42
43for idx in range(numLines):
44 disassemblyLine = daLines.at(idx)
45 print('\nline: ', idx, '/', numLines - 1)
46 printDisassembly(disassemblyLine)
47
48# It is important that we release the allocated resource
49dataCtrl2.release(disassembly)