I want to find the total number of machine instructions of an Android Application. I have explored the Debug.InstructionCount class of Android SDK, but I believe it provides info of Dalvik VM instructions (not the machine level instructions which actually executes on the processor). I need this info to estimate the time required for the execution of an Android application on a particular processor (using fixed frequency). I am aware of the fact that different type of instructions take variable cycles due to which the computational time cannot be estimated accurately, but I still want to do some experimentation. Thank you
How to find total number instructions of a program?
635 views Asked by atta At
1
There are 1 answers
Related Questions in ANDROID
- Creating global Class holder
- Flutter + Dart: Editing name of a tab shows up a black screen
- android-pdf-viewer Received status code 401 from server: Unauthorized
- Sdk 34 WRITE_EXTERNAL_STORAGE not working
- ussd reader in Recket Native module
- Incorrect display of LinearGradientBrush in IOS
- The Binary Version Of its metadata is 1.8.0, expected Version is 1.6.0 build error
- I can't make TextInput to auto expand properly in Android
- Creating multiple instances of a class with different initializing values in Flutter
- How to create a lottie animation
- making android analyze with coverity sast tool
- Flutter plugin development android src not opening after opening example
- I initialize my ViewModel in the Activity with several fragments as tabs, but the fragments(tabs) return null for the updated livedata
- Node.js Server + Socket.IO + Android Mobile Applicatoin XHR Polling Error...?
- How I can use the shared preferences class?
Related Questions in ARM
- Jiobook flashing
- How to flush denormal numbers to zero for apple silicon?
- How to exploit Unified Memory in OpenCL with CL_MEM_ALLOC_HOST_PTR flag?
- ARM Assembly code is not executing in Vitis IDE
- Which version of ARM does the M1 chip run on?
- Vector by Scalar Division with -ffast-math
- Why veneer code generated by gcc for cortex-m0 seems 8-byte aligned?
- Getting almost random time stamp counter on ARM
- Portenta H7 Baremetal Development and a Little Guidance on Embedded System Learning Roadmap
- STM32 RTC3 Mixed Mode: Writing TR resets SSR
- Implementing Quick Sort Algorithm in Visual2 with armv7
- How can I create an Inline assembly command with a multi-variable register offset?
- Inquiry: ARM Compatibility for Puppeteer
- Confusion with thumb instructions while compiling recipe for cortexm4 CPU
- Difficulty understanding virtual LPIs in GICv3
Related Questions in INSTRUMENTS
- Tracking domains - Network Instrument Points of Interest
- Why "Required kernel recording resources are in use by another document" error is thrown when I try to run Executable in Instruments-> Leaks?
- Profile memory usage of iOS File Provider extension
- iOS UITableView with several performBatchUpdates called relatively quickly causes scrolling to be jerky
- Which instructions are included in the hardware event `INST_SIMD_ALU`?
- How can you run Instruments/Logger with a TestFlight app?
- Xcode Debugger and Memory Graph's memory metric is different from the VM Tracker
- What is the difference Between 'Dirty Memory' and 'Dirty Size' in iOS VM Tracker?
- How to fix the read() error in the following code to control B1500 (parameter analyzer) using PyVISA?
- What exactly does the Instruments CPU Profiler measure?
- What's the difference between INS_AddInstrumentFunction and INS_InsertCall in Intel PIN
- Permission to debug host.exp.Exponent was denied
- Xcode Instruments “Points of Interest” dropping intervals
- ivreg or ivprobit for binary variables?
- How to create a IVI driver object with logical name in Python?
Related Questions in DALVIK
- android art genertate verification errors,how to
- Dalvid opcode parser
- What is the Memory model of DVM or ART in Android
- android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff?
- Why a Scala 2.13 app is trying to use `JavaClassValue` on Android if it is not available, then triggering `java.lang.NoClassDefFoundError`?
- Does calling Java's JVM instance-altering functions have any affects in an Android application?
- class loaded via dalvik.system.PathClassLoader cannot resolve dependencies on classes in the app
- why a field named "$r8$clinit" was generated in an interface in its smali code?
- Dalvik crash on Oneplus on Android 12
- Android - failed to generate Javadoc with Android Studio Bumblebee
- how to locate the register problem in Android after modifying some smali code of an APK?
- Problem when update targetSdkVersion to 30 Dalvik, Javafx,
- Why Dalvik register-based, but use stack, what is differnce?
- Does Dalvik create stacks to manage threads
- Is there a way to install an Android application by copying files / only modifying the file system?
Related Questions in MACHINE-INSTRUCTION
- Transform a stack using Java Virtual Machine Instruction Set
- Instruction Cycle max and min?
- Is carry flag usually cleared after Jump-Not-Carry instruction has been evaluated?
- Why does CMP L and CMP M instructions in Microprocessor 8085 have same opcode BD?
- How computer CPU executes a Software Application
- Who decides which instructions are to be kept privileged? Is it the hardware manufacturer or the OS developers
- How many values can be stored per physical address in Memory?
- Extracting MachineBasicBlock from Branch Instruction
- How does the following I-Type instruction change the program counter?
- How to convert a memory address to a code segment address?
- What are the Absolute Far Jump Operands in X86
- What x86 instructions take two (or more) memory operands?
- mapping from (Assembly) instruction sequences to C code
- Can C++ have code in the global scope?
- 5 Stage Datapath - Multi-cycle without pipeline
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
My solution involves writing an instruction set simulator, running the app and counting the instructions. There are already open source avr simulators out there than you can just use/modify for this.
At the end of the day in order to do this you have to follow the instruction flow, so either you actually sim it and that automatically solves how many times the code really goes through a loop and such, or you write a disassembler (which is half of a simulator) and basically follow the code flow in execution order (actually much simpler than a full disassembler or simulator) but you have to deal with all the possible code paths and loops as you find the different paths and count the different paths. With minimal work you could come up with the shortest possible path and know the code could never be faster than that.