OldComp.cz
http://oldcomp.cz/

Poradí mě někdo jak přeložit JAVA projekt?
http://oldcomp.cz/viewtopic.php?f=113&t=6281
Stránka 11

Autor:  microlan [ 26.04.2018, 20:44 ]
Předmět příspěvku:  Poradí mě někdo jak přeložit JAVA projekt?

2x mě nikdo neodpověděl na dotaz ohledně JAVy a tak jsem zadal vyhledávání a zjistil, že se to tu moc nemusí. Nikdy jsem v tom nic nedělal a nechci v tom utápět moc energie, ale potřeboval bych upravit emulátor pro VDU MK14ky. Jde o přepsání 4 konstant a o přeložení zpět do JARu, nebo uvítám alespoň radu čím to přeložit a trochu nasměrovat.

//nebo jestli to jde, tak jak ty konstanty najít v tom JARu

Autor:  baktra [ 26.04.2018, 21:00 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

Konstanty v JARu nepřepíšeš, obzvlášť je-li komprimovaný.

Co tedy potřebuješ...

1. Java Development Kit (JDK, abys mohl překládat programy v Javě. Ten obsahuje překladač javac (bin/javac.exe), který akceptuje .java soubory a vyrobí z nich .class soubory)
2. NetBeans (Vývojové prostředí)

Obojí se dá stáhnout jako jeden balík zde: http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp-142931.html
Pak v NetBeans vytvoříš nový projekt (z existujících zdrojáků), zvolíš která třída je hlavní a provedeš BUILD projektu. Tím vznikne .jar soubor.

Výše uvedené je samozřejmě teoretizování, protože ten emulátor může používat vlastní skripty na sestavení. JDK ale budeš potřebovat určitě.

Autor:  microlan [ 26.04.2018, 21:53 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

Dík za radu. Našel jsem ty konstanty v .class souboru. Můžu je přepsat tam a ušetřit si překlad java>class?

Autor:  baktra [ 26.04.2018, 22:56 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

Můžeš to klidně zkusit. V lepším případě to bude fungovat, v horším jsou .class soubory chráněné kontrolním součtem proti neoprávněné manipulaci, a pak to při spuštění vyhodí výjimku.

Autor:  zdenek6 [ 27.04.2018, 07:08 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

Konstanty jsou v .class souboru uložené na více místech, buď v tzv. "constant pool", který je hned na začátku .class souboru, nebo jsou součásti instrukce - platí pouze pro čísla -32768 až 32767. Přímá změna v .class souboru je možná, žádné kontrolní součty tam nejsou.

Autor:  microlan [ 27.04.2018, 08:46 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?(vyřešeno)

Nakonec jsem to dokázal přeložit se vším všudy a tady jsou dva obrázky, který mě dnes potěšily. Je ale divné, že výsledek má poloviční data, než ten původní a přesto to funguje.

//Baktra, ještě jednou děkuji za tip

Přílohy:
obrdne.png
obrdne.png [ 7.18 KiB | Zobrazeno 8975 krát ]
java.png
java.png [ 90.06 KiB | Zobrazeno 8975 krát ]

Autor:  microlan [ 27.04.2018, 18:18 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

Tak se mě otevřela cesta na úpravu vstupních dat. Tento systém importuje HEX soubory ve formátu 4 znaky adresa, mezera pak 16 hex hodnot oddělených mezerou. Musel jsem binárku vyexportovat jako HEXtext a v editoru doplnit sloupec s adresama, čili práce tak na 2 minuty, než jsem dostal přeložený kód do emulátoru. Zkusím, jestli to půjde upravit na binárku, případně intelHEX.

Autor:  Martin8bity [ 28.04.2018, 07:58 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

Na konverzi do Intel HEX je hormada utilitek.

Autor:  microlan [ 28.04.2018, 19:41 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

Já vím,taky to tak dělám, ale zdržuje to. Chci aby ten simulátor uměl přímo výstup z assembleru, bez nějakého překódovávání. Když už ho umím přeložit (ten JAVA projekt), tak ho ten intelHEX taky naučím číst

Kód:
   /**
    * Reads one line of a hex dump into the given memory area. The hex dump starts with the
    * absolute address, followed by one or more bytes consisting of 1-2 hex digits.
    * @param str The string with the hex data to read.
    * @return int Start address for this hex line.
    */
   public int read(String str) throws HexFormatException {
      StringTokenizer st = new StringTokenizer(str, " ,-\t");
      boolean firstToken = true;
      int lineStartAddress = -1;
      
      while (st.hasMoreTokens()) {
         String s = st.nextToken().trim();
         
         // stop at comments (even if first token)
         if (s.startsWith(";") || s.startsWith("|") || s.startsWith(".")) {
            break;
         }
         // skip labels in the input file (looks like a .dis file to re-import)
         if (s.startsWith("L$") || s.endsWith(":")) {
            continue;
         }

         // first token is target memory address of data
         if (firstToken) {
            workingAddress = HexHelper.toInt(s);
            lineStartAddress = workingAddress;
            firstToken = false;
         } else {
            memory.set(workingAddress, HexHelper.toByte(s));
            workingAddress++;
         }
      }
      
      return lineStartAddress;
   }
}

Autor:  microlan [ 28.04.2018, 19:49 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

To, co to čte vypdá takto:

Kód:
0000 08 C4 0E 35 C4 00 31 C4 FF C8 1C C4 20 CD 01 B8
0010 16 9C F8 C4 0F 35 C4 00 31 C4 FF C8 0A C4 20 CD
0020 01 B8 04 9C F8 90 01 00 C4 0E 35 C4 00 31 C4 10
0030 C8 F5 C4 3D CD 01 B8 EF 9C F8 C4 0E 35 C4 00 31
0040 C4 00 37 C4 6E 33 3F C4 0E 35 C4 0F 31 C4 00 37
0050 C4 6E 33 3F C4 0F 35 C4 00 31 C4 00 37 C4 6E 33
0060 3F C4 0F 35 C4 0F 31 C4 00 37 C4 6E 33 3F 00 C4
0070 10 C8 0B C4 49 CD 10 B8 05 9C F8 3F 90 F1 00

Autor:  microlan [ 28.04.2018, 20:22 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

No, vlastně už to někdo udělal za mně

https://github.com/j123b567/java-intelhex-parser/tree/master/src/cz/jaybee/intelhex

Autor:  Martin8bity [ 29.04.2018, 08:17 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

Ten kus kodu nahore ale neni Intel HEX, je to normalni vypis hexa hodnot. Intel HEX ma adresy a kontrolni soucty, ja mam Intel HEX celkem rad prave kvuli nim.

Autor:  microlan [ 29.04.2018, 10:46 ]
Předmět příspěvku:  Re: Poradí mě někdo jak přeložit JAVA projekt?

No právě, používá to výpis a proto to chci upravit na intelHEX, který leze z assembleru, abych to nemusel převádět. Nebo snad TASM umí výpis?

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/