yidong1981的笔记 https://bbs.21ic.com/?86463 [收藏] [复制] [RSS]

日志

DSP C6000的反汇编

已有 1249 次阅读2006-6-28 14:29 |系统分类:DSP

对于如下程序:


#include "testcfg.h"


void Func_tmp2()
{
 int i=0;
 i++;
}


void FUNC_TEMP (void)
{
Func_tmp2(); 
}



void main()
{
 FUNC_TEMP();
}


其汇编结果:


0000CEC0          Func_tmp2:
0000CEC0 07BF005A            SUB.L2        SP,8,SP//堆栈指针减8,这里没有对B3入栈是因为在这个函数中,没有用到B3,也就是说没有修改B3
0000CEC4 0200A35A            MVK.L2        0,B4//B4对应变量i
0000CEC8 023C22F6            STW.D2T2      B4,*+SP[0x1]//将变量i入栈
0000CECC 00002000            NOP           2
0000CED0 0210205A            ADD.L2        1,B4,B4//i++
0000CED4 023C22F6            STW.D2T2      B4,*+SP[0x1]//将i再保存到原来栈的地方
0000CED8 00002000            NOP           2
0000CEDC 07BD005A            ADD.L2        8,SP,SP//修正堆栈指针
0000CEE0 008CA362            BNOP.S2       B3,5//返回到RL0
0000CEE4          FUNC_TEMP://FUNC_TEMP函数的地址
0000CEE4 01BC54F6            STW.D2T2      B3,*SP--[0x2] //B3寄存器被用来保存函数调用时的返回地址,在函数执行之前需要入栈保护,直到函数返回前再出栈
0000CEE8 00002000            NOP           2
0000CEEC 0FFFFC10            B.S1          Func_tmp2//准备跳入Func_tmp2
0000CEF0 01858162            ADDKPC.S2     RL0,B3,4//保存从Func_tmp2返回的地址
0000CEF4          RL0:                                                         
0000CEF4 01BC52E6            LDW.D2T2      *++SP[0x2],B3//将入栈的B3再出栈,对应的是main函数的RL1地址
0000CEF8 00006000            NOP           4
0000CEFC 008CA362            BNOP.S2       B3,5//返回到RL1
0000CF00          main: //主函数地址
0000CF00 01BC54F6            STW.D2T2      B3,*SP--[0x2] //B3寄存器被用来保存函数调用时的返回地址,在函数执行之前需要入栈保护,直到函数返回前再出栈0000CF04 00002000            NOP           2                           
0000CF08 0FFFFC90            B.S1          FUNC_TEMP//准备进入FUNC_TEMP函数
0000CF0C 01848162            ADDKPC.S2     RL1,B3,4//保存返回地址到B3
0000CF10          RL1: //从FUNC_TEMP函数返回后应跳入的地方
0000CF10 01BC52E6            LDW.D2T2      *++SP[0x2],B3//将之前入栈的B3再出栈
0000CF14 00006000            NOP           4
0000CF18 008CA362            BNOP.S2       B3,5


在uC/OS中,将要根据这些内容进行移植!


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)