![]() |
ASSEMBLER en JAVA
Hola Amigos. bueno me encuentro haciendo una transcripcion de una parte de un programa desarrollado en delphi a java.
a los golpes y con mucho trabajo vengo bien. hasta que me he topado con lo siguiente..
Este codigo En ASSEMBLER. El problema es.. es posible y utilizar codigo assember en javA? If True Como? Muchas gracias. |
Hola
Tal vez esta página te ayude de algo. http://today.java.net/pub/a/today/20...from-java.html Salud OS |
gracias egostar!!, mañana me voy a tomar el trabajo de leerla completita y bien detalladamente porque por una mirada rapida que le di. no entendi un pomo jejeje
saludos y gracias |
El enlace que te muestra egostar, aconseja utilizar otro lenguaje (MASM) para crear una librería dinamica que contenga las funciones en ASM que requieres y luego exportar dichos métodos en JAVA. Es posible hacer lo mismo con Delphi; creas una DLL pegas la funcion que quieres exportar (ROL2) la defines como stdcall y la exportas. Pero creo que un simple ROL 2 no amerita tanto esfuerzo:
Código:
private char ROL2(char Value) |
Hola cHaKall, gracias por la info. de todas maneras. de pura casualidad encontre
es decir que ya existe la funcion... gracias de todos modos y perdon por molestar.. |
Bueno la funcion anterior que les comente no funciona bien debido a que no completa los 8 bits (es decir no rellena con ceros entonces da un error importante)
cHacKall hice una modificacion a lo que me posteaste
Cambie tel Tipo de dato por Byte. pero de todas maneras sigo teniendo este error Cita:
sabrias decirme a que se debe? gracias |
Cita:
Código:
private static byte ROL2(byte Value) |
gracias cHacKall. porque la verdad que estoy haciendo mis primeras armas en java. y justamente transcribiendo unas lineas de delphi. bueno hay muchos fundamentos de JAVA que se encuentras ausentes en mi.
gracias de nuevo y te comento como me resulto todo saludos |
Sigo con el mismo error... por mas que utilize el Typecast.
Cita:
uso el for para verificar que no haya perdida de datos. debido a que el programa original asi lo hace con el ROL del assembler. y se puede decir que siempre da el mismo resultado.. debido a que solo rota los 8 bits. Utilizando el Integer.rotatetoleft() no funciona bien ya que no completa los 8 bits es decir No rellena con Ceros. |
Bueno ahi pude hacer que compile..
Simplemente haciendo lo que vos dijiste... usando el TypeCast. me habia comido un par de ( ... ) El tema es el siguiente. el Rol 83,2 deberia dar 77 y da 76 eso se debe a no completa los 8 Bits. Si lo hacemos manual seria! 01010011 = 83 01001101 = 77 y como te inmaginaras apartir de ahi todos los calculos dan mal. |
Código:
private static byte ROL2(byte Value) |
Usando este codigo!!!
el Rol Da lo siguiente ROL 83,2 = 77 ROL 77,2 = 53 ROL 53,2 = 212 ROL 212,2 = 83 ROL 83,2 = 77 como te inmaginas uso el resultado como valor de entrada y los valores se repiten!! Utilizando el Codigo de java!! 77 53 -44 -1 -1 -1 -1 -1 Como te inmaginaras.. sigo con el mismo problema.. en verdad no los Rota. sino que los Desplaza. es decir los mueve y rellena con 0 me parece que voy a tener que hacer algo de manera cacera!! |
Considero que no es necesario el modificador "static" en una función sin variables declaradas, digo esto porque solo un comportamiento "residual" provocaría que una función retorne un valor correcto con un numero X, y que luego de algunas iteraciones al azar retorne un valor incorrecto con el mismo numero de prueba X (me refiero al "83" en tus pruebas).
Aparte de ese problema, he notado que el tipo de datos “byte” en JAVA tiene un rango de 2^7-1 al igual que un ShortInt de Delphi, con lo cual el valor esperado será siempre erróneo cuando sea establecido el último bit de dicho tipo (el signo). Hagamos otra prueba antes que decida instalar JAVA :rolleyes:, y por favor si realizas alguna modificación a la misma explícame la razón puntualmente; Código:
private int ROL2(int Value) |
Hola cHackAll, mira el cambio que hice lo hice sin saber, TE pido disculpas y voy a probar eso que me pasaste a ver si todo funciona Bien.
y la verdad que mucho no te voy a poder explicar si hago algun cambio, que como dije. es mi primer Pasito en el lindo mundo de java. saludos y estoy en contacto |
Bueno cHacKall, la verdad que me ayudaste muchisimo, en 2 dias pude solucionar algo que me venia llevando unos cuantos mas..
Te cuento que la funcion quedo de 10, de la siguiente manera. Antes que nada Volvi a declarar la funcion como STATIC porque sino me daba el siguiente Error. Cita:
Y bueno he aqui el codigo!!
Cita:
|
| La franja horaria es GMT +2. Ahora son las 16:10:06. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi