This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

uvision disassembly is inconsistent between function calls

I'm working with a freescale FRDM-MKL25Z4 development board, writing some minimal code. I find that the simulator and the development board seem to disagree on the behavior. also in my disassembly window I often get different disassembly for the same instruction.

memcpy:
0x00000292 B5B0 DCW 0xB5B0 << why isn't this a PUSH?
0x00000294 B089 DCW 0xB089
0x00000296 4613 DCW 0x4613
...
0x000002DC BDB0 DCW 0xBDB0

memset:
0x000002DE B5B0 PUSH {r4-r5,r7,lr} <<why is it PUSH here?
0x000002E0 B088 SUB sp,sp,#0x20

any help would be appreciated.

Parents
  • DCW is irrelevant - the presentation doesn't interfere with the simulators ability to run code.

    A processor do not care if the assembler file thinks a byte is part of data or part of code. When a jump goes to a specific address, the processor will try to decode the data at that address as code.

    So if your code jumps to memcpy(), then the simulator will perform as it should. And in that case, it should also disassemble that block of data as code since it understands from the PC that it is expected to be code.

Reply
  • DCW is irrelevant - the presentation doesn't interfere with the simulators ability to run code.

    A processor do not care if the assembler file thinks a byte is part of data or part of code. When a jump goes to a specific address, the processor will try to decode the data at that address as code.

    So if your code jumps to memcpy(), then the simulator will perform as it should. And in that case, it should also disassemble that block of data as code since it understands from the PC that it is expected to be code.

Children