请教各位:ADS编译汇编出来的汇编程序为何会不对
编译器为 ADS1.2我编译的时候,C源码的逻辑是对的,可是反汇编的结果就不对
源码:
#define DWORD unsigned int
#define BYTE unsigned char
#define LD_DWORD(ptr)(DWORD)(((DWORD)*(BYTE*)((ptr)+3)<<24)|((DWORD)*(BYTE*)((ptr)+2)<<16)|((DWORD)*(BYTE*)((ptr)+1)<<8)|((DWORD)*(BYTE*)(ptr)<<0))
void Main(void)
{
BYTE i;
BYTE num;
for(i=0; i<12; i++)
{
num = 0x10+ i;
}
if((LD_DWORD(num) & 0xFFFFFF) == 0x00121110)
{
num = 0;
}
else
{
num = 1;
}
}
汇编出来的汇编代码为:
ldrb r0,
ldrb r1,
mov r0,r0,lsl #24
orr r0,r0,r1,lsl #16
ldrb r1,
orr r0,r0,r1,lsl #8
ldrb r1,
orr r0,r0,r1
ldr r1,0x00000078 ; = #0x00121110
mov r0,r0,lsl #8
cmp r0,r1,lsr #8
bne 0x6c; (Main + 0x60)
很明显倒数第 2 行 (图片中红框所示)应该为 cmp r0,r1,lsl #8 才算是对的,不知道为何会这样,请教各位,谢谢!
源码和图片分别上传
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_639220NI6MWH.jpg
(原文件名:汇编结果.jpg)
点击此处下载 ourdev_639221DBX4GD.rar(文件大小:20K) (原文件名:test.rar)
页:
[1]