最近、インラインアセンブリから高級言語(C ++)に移行しました。ここで、からの結果をvalue^0x1A3C
短い型のポインター(WORD PTR)に設定したいのですが、次のエラーが発生します。
int型の値を使用してshort型のエンティティを初期化することはできません*
int型をshortに渡すときに問題が発生しました*:
void PacketEncrypt(Packet* packet, int sizeofpacket)
{
char* pointer;
pointer = ((char*)packet+sizeofpacket) -2;
short *pointer = packet->PacketSize^0x1A3C;
packet->Type += 0x0FFF7;
}
コンパイラに作成してほしいもの:
0041585E 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
00415861 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
00415864 8D5401 FE LEA EDX,DWORD PTR DS:[ECX+EAX-2]
00415868 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
0041586B 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0041586E 0FBF08 MOVSX ECX,WORD PTR DS:[EAX]
00415871 81F1 3C1A0000 XOR ECX,1A3C
00415877 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
0041587A 880A MOV WORD PTR DS:[EDX],CX