C2414: Número de operandos no válido

Estado
Cerrado para nuevas respuestas.

SimP

Thalion
Ex-Staff
Obtengo este error al querer compilar mi proyecto, no quiero exactamente comentar qué es porque voy a hacer un aporte luego.. ¿Alguien tiene alguna idea de qué lo causa? Estuve mucho tiempo investigando y sigo sin poder solucionarlo.

Uso C++ con Visual Studio 2012.

¡Saludos!
 

Arzhnnsz

Oráculo Lvl 6
Emmm, estaria bueno que digas como es el error o muestres una foto, no somos adivinos, va por lo menos yo no xD
Un abrazo.
 

Franeg95

CARP
Ex-Staff
No tengo ni puta idea sin ver el código (por lo menos el ámbito donde da el error). Sin embargo es más legible a la lectura que en vez de _asm uses _asm{ CODIGO MULTILINEA con ; en cada linea }
 

SimP

Thalion
Ex-Staff
Franeg95 dijo:
No tengo ni puta idea sin ver el código (por lo menos el ámbito donde da el error). Sin embargo es más legible a la lectura que en vez de _asm uses _asm{ CODIGO MULTILINEA con ; en cada linea }
Pero el código lo había compilado tranquilamente antes, agregué un par de líneas nomas. Me parece muy raro en verdad, porque lo que agregue´realmente no debería afectar a nada, dado que es agregar un nuevo DWORD y el ultimo void del code que ven en la imagen... Raro.

¡Saludos!
 
W

Wolftein

Invitado
__asm esta bien la linea, para empezar:

1) Estas agregando codigo (Implementacion) en un archivo .h (.h, .hpp, .inl es Header o declaraciones, .c, .cpp es codigo o implementacion)
2) __asm INC [EBX+0x04], EDI eso no existe


INC es INCREMENTAL, lo cual toma un parametro:

INC EAX
INC [EAX]
INC EBX
DEC EAX
DEC [EAX]
DEC [EBX]

INC [EBX + 0x04], EDI -> Assembly invalido (Mirar el manual de INTEL). Creo que lo que quisiste poner ahi fue un movimiento referencial (MOV DWORD PTR [EBX + 0x04], EDI)

PD: No se que queres hacer con esas funciones, veo varios errores y no tiene coherencia.
PD2: Alpedo naked en esas funciones, ya que no estas manipulando el stack o haciendo un fastcall, stdcall en especial.
 

SimP

Thalion
Ex-Staff
Wolftein dijo:
__asm esta bien la linea, para empezar:

1) Estas agregando codigo (Implementacion) en un archivo .h (.h, .hpp, .inl es Header o declaraciones, .c, .cpp es codigo o implementacion)
2) __asm INC [EBX+0x04], EDI eso no existe


INC es INCREMENTAL, lo cual toma un parametro:

INC EAX
INC [EAX]
INC EBX
DEC EAX
DEC [EAX]
DEC [EBX]

INC [EBX + 0x04], EDI -> Assembly invalido (Mirar el manual de INTEL). Creo que lo que quisiste poner ahi fue un movimiento referencial (MOV DWORD PTR [EBX + 0x04], EDI)

PD: No se que queres hacer con esas funciones, veo varios errores y no tiene coherencia.
PD2: Alpedo naked en esas funciones, ya que no estas manipulando el stack o haciendo un fastcall, stdcall en especial.
¿Pero el error es por eso?

Extraño que sea un assembly invalido, o sea no tengo objecion ante eso porque es asi y es asi, voy a intentar de rehacer el código. En cuanto tenga la solución posteo acá o te mando un MP si serías hermosamente amable de contestar :p.

EDIT: Muchas gracias Wolf, tenía que cambiar el INC por ADD ^^. Eso era lo que buscaba, realmente lo agradezco. Pueden cerrar.

¡Saludos!
 
Estado
Cerrado para nuevas respuestas.
Arriba