私はVC++2010でインラインアセンブリを作成して、バイトのRGBバッファをバイトのRGBAバッファにアンパックしようとしています。これが私が思いついたものです。
しかし、私はエラーを受け取ります
1>c:\users\tom\documents\visual studio 2010\projects\source\engine\image_load.c(28): error C2414: illegal number of operands
1>c:\users\tom\documents\visual studio 2010\projects\source\engine\image_load.c(28): error C2400: inline assembler syntax error in 'first operand'; found ':'
1>c:\users\tom\documents\visual studio 2010\projects\source\engine\image_load.c(29): error C2400: inline assembler syntax error in 'opcode'; found ':'
1>c:\users\tom\documents\visual studio 2010\projects\source\engine\image_load.c(29): warning C4405: 'MOV' : identifier is reserved word
1>c:\users\tom\documents\visual studio 2010\projects\source\engine\image_load.c(30): error C2415: improper operand type
1>c:\users\tom\documents\visual studio 2010\projects\source\engine\image_load.c(31): error C2415: improper operand type
1>c:\users\tom\documents\visual studio 2010\projects\source\engine\image_load.c(37): warning C4405: 'loop' : identifier is reserved word
1>c:\users\tom\documents\visual studio 2010\projects\source\engine\image_load.c(71): warning C4018: '<' : signed/unsigned mismatch
何が問題なのかよくわかりません。これが私のコードです。
void RGBtoRGBA (byte *rgba, const byte *rgb, int pixelCount) {
__asm {
MOV EDX, pixelCount
MOV EBX, rgba
MOV ECX, rgb
loop:
MOV [EBX], ECX
MOV [EBX+1], [ECX+1]
MOV [EBX+2], [ECX+2]
MOV [EBX+3], 255
ADD EBX, 4
ADD ECX, 3
DEC EDX
JNZ loop
}
}
私を許してください、私はアセンブリに不慣れです:(