我有一个C函数,它试图将帧缓冲区复制到FSMC RAM.
这些函数将游戏循环的帧速率降低到10FPS.我想知道如何分析反汇编函数,我应该计算每个指令周期吗?我想知道CPU在哪里花费时间,在哪一部分.我确定算法也是一个问题,因为它的O(N ^ 2)
C函数是:
void LCD_Flip()
{
u8 i,j;
LCD_SetCursor(0x00, 0x0000);
LCD_WriteRegister(0x0050,0x00);//GRAM horizontal start position
LCD_WriteRegister(0x0051,239);//GRAM horizontal end position
LCD_WriteRegister(0x0052,0);//Vertical GRAM Start position
LCD_WriteRegister(0x0053,319);//Vertical GRAM end position
LCD_WriteIndex(0x0022);
for(j=0;j<fbHeight;j++)
{
for(i=0;i<240;i++)
{
u16 color = frameBuffer[i+j*fbWidth];
LCD_WriteData(color);
}
}
}
Run Code Online (Sandbox Code Playgroud)
拆卸功能:
08000fd0 <LCD_Flip>:
8000fd0: b580 push {r7, lr}
8000fd2: b082 sub sp, #8
8000fd4: af00 add r7, sp, #0
8000fd6: 2000 movs r0, #0
8000fd8: 2100 movs r1, #0
8000fda: f7ff fde9 bl 8000bb0 <LCD_SetCursor>
8000fde: 2050 movs …Run Code Online (Sandbox Code Playgroud)