KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I was debugging some c++ code (WinCE 6 on ARM platform), and i find some behavior strange: 4277220C mov r3, #0x93, 30 42772210 str r3, [sp] 42772214 ldr r3, [pc, #0x69C] 42772218 ldr r2, [pc, #0x694] 4277221C mov r1, #0 42772220 ldr r0, [pc, #0x688] Line 42772214 ldr r3, [pc, #0x69C] is used to get some constant from .DATA section, at least I think so. What is strange that according to the code r2 should be filled with memory from address pc=0x42772214 + 0x69C = 0x427728B0, but according to the memory contents it's loaded from 0x427728B8 (8bytes+), it happens for other ldr usages too. Is it fault of the debugger or my understanding of ldr/pc? Another issue I don't get - why access to the .data section is relative to the executed code? I find it little bit strange. And one more issue: i cannot find syntax of the 1st mov command (any one could point me a optype specification for the Thumb (1C2)) Sorry for the laic description, but I'm just familiarizing with the assemblies.
Tags (comma-separated)
Save Edits
Cancel