我有一个任务,除其他外,我需要在.asm文件中查找某个指令和"反向工程"(找出)C代码的哪一部分导致它在汇编程序级别执行.(文字下方的例子)
什么是最快(最简单)的方法.或者更好地说,.asm文件中的其他命令/指令/标签应该/我可以注意什么,这将指导我使用正确的C代码?
我几乎没有使用汇编代码的经验,很难弄清楚C代码的确切行会导致特定指令发生.
如果这有任何区别,那么这个架构就是TriCore.
示例:通过跟踪使用变量的位置,我设法找出C代码在asm文件中导致插入的内容
.L23:
movh.a a15,#@his(InsertStruct)
ld.bu d15,[a15]@los(InsertStruct)
or d15,#1
st.b [a15]@los(InsertStruct),d15
.L51:
ld.bu d15,[a15]@los(InsertStruct)
insert d15,d15,#0,#0,#1
st.b [a15]@los(InsertStruct),d15
.L17:
mov d15,#-1
Run Code Online (Sandbox Code Playgroud)
这导致我得到以下C代码:
InsertStruct.SomeMember = 0x1u;
InsertStruct.SomeMember = 0x0u;
Run Code Online (Sandbox Code Playgroud)