Přepis krátkého kodu v jave do assembleru x86 – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Přepis krátkého kodu v jave do assembleru x86 – Assembler – Fórum – Programujte.comPřepis krátkého kodu v jave do assembleru x86 – Assembler – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Pavel Novák
~ Anonymní uživatel
2 příspěvky
16. 5. 2017   #1
-
0
-

Zdravím, v assembleru se naprostej začátečník, tak bych poprosil o pomoc.

Mám přespat program v jave co maže prvek v poli na pozici ( index) do assembleru.

long[] pole = new long [] ( 1, 2, 3 , 4, 5, 6, 7, 8, 9, 10) ;

void smazPrvek (int index, long [] pole) {

int i = index;

while (pole[i] != 0){

     long tmp = pole[i + 1] ;

    pole[i] = tmp;

    i++; }

}

Díky každé hodné duši

Nahlásit jako SPAM
IP: 160.217.223.–
Reklama
Reklama
Jerry
~ Anonymní uživatel
116 příspěvků
16. 5. 2017   #2
-
0
-

#1 Pavel Novák
Co je tohle za chujovinu :) kdo to vymyslel :) To sou strašný špeky co sem někdo napíše :) A to máš zadání od šéfa ? nebo od manželky šéfa ?

No tak teď seriozně. A v jakým assembleru to chceš ? a pro jakej procesor ? Jde o to, že pole má přidělenou obvykle kontinuální oblast paměti. Nejsem Javař, ale např. v Céčku to tak je. Takže skutečné fyzické smazání prvku pole (tzn. na tvrdo) znamená smazání celého pole a vytvoření nového pole bez onoho prvku, který nechci. Řešení je např. napsat tento kod v Native C x32/x64 nebo C++ nebo C#  a po překladu se podívat na vytvořený assembler. Tak a teď zas řekni něco ty :) 

PS: ty si zlobil ? prděl si šéfovi v kanclu ? nebo si zíral na dudy jeho manželky ?   

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:a4fe:...–
Jerry
~ Anonymní uživatel
116 příspěvků
16. 5. 2017   #3
-
0
-

#1 Pavel Novák
co tohle:

http://stackoverflow.com/questions/11632078/code-injecting-assembly-inlining-in-java

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:a4fe:...–
gna
~ Anonymní uživatel
363 příspěvků
16. 5. 2017   #4
-
0
-

#2 Jerry
Nevšiml jsem si, že ty bys sem někdy napsal něco jiného, než chujoviny.

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
2871 příspěvků
16. 5. 2017   #5
-
0
-

#2 Jerry
Cozeto? To se dovidam veci o prace s poli, ze by jeden ziral. :)
Mimochodem, rozsah definovany ma, typ long.

Pole je usek souvisle pameti. Pro ty s lepsi predstavivosti, treba neco jako vlacek se stejnymi vagonky.
1. Prvek na zacatku se maze tak, ze posunes adresu pole +1.
2. Prvek na konci, ze zmenis promenou delka pole o -1.
3. Prvek uprostred, ze posunes vsechny prvky o 1 od prvku, ktery tam nechces. Smer vlevo nebo vpravo, podle toho, kde je to bliz k okraji. Prepises ten, ktery tam nechces. A provedes krok 1 nebo 2, pdole toho, jaky jsi zvolil smer.

Ale, za urcitych okolnosti, muze byt vyhodnejsi vytvorit uplne novy usek pameti. Napriklad, kdyz delas multi-thread sortovani. Samozrejme, musis mit spravny algoritmus :)
(v podstate, kdyz se nad tim zamyslis, tak insert sort jsou vsechny algoritmy quick, insert, list-merging, ... ale jen nektere lze napsat multi-hread; resp, kdyz je zkusis napsat multi, tak zjistis, ze jsou stejne :) )

Nahlásit jako SPAM
IP: 2001:718:2601:26c:5df0:50...–
peter
~ Anonymní uživatel
2871 příspěvků
16. 5. 2017   #6
-
0
-

   

0  1  2  3  4   - adresa
[1][2][3][4][5] - obsah, start:0, end:4

   [2][3][4][5] - smazani z leva, start:1, end:4

[1][2][3][4]    - smazani z prava start:0, end:3

[1]   [3][4][5] - posun obsahu z 0 na 1
   [1][3][4][5] - posun start: 1, end:4

[1][2][3]   [5] - posun obsahu z 5 na 5
[1][3][4][5]    - posun start: 0, end:3
Nahlásit jako SPAM
IP: 2001:718:2601:26c:5df0:50...–
Jerry
~ Anonymní uživatel
116 příspěvků
16. 5. 2017   #7
-
0
-

#6 peter
aha tak takhle se to dělá. vypadá to moc hezky. tak teď ještě ten platformově nezávislý assembler a bude to hotové.  

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:355d:...–
Pavel Novák
~ Anonymní uživatel
2 příspěvky
16. 5. 2017   #8
-
0
-

Já se slušně ptám tak nevím proč když je někdo ochotný něco napsat proč to nemůže udělat taky tak..asi zábava :)  ....takže děkuji za normální odpověď peter. 

Jinak syntaxe pro Intel a je to assembler x86_64

Nahlásit jako SPAM
IP: 160.217.223.–
Jerry
~ Anonymní uživatel
116 příspěvků
16. 5. 2017   #9
-
0
-

#8 Pavel Novák
dostal jsi kvalitní odpovědi: viz odpovědi od "Peter" a

http://stackoverflow.com/questions/11632078/code-injecting-assembly-inlining-in-java

hlavně příklad ( Assembler x64 pro procesory Intel a AMD od Pentia I ) v

https://github.com/PyvesB/JavAssembly

jinak si budeš muset vybrat jestli chceš assembler x86 nebo x64 protože každé je něco jiného. Je to docela problém když napíšeš takovou otázku. Java je platformově nezávislá. Tím, že doplníš kod v ASM např. x64 tak daný kod omezíš JEN na určitou platformu. Měl bys napsat tenhle dotaz do sekce JAVA.

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:355d:...–
hlucheucho+13
Posthunter
17. 5. 2017   #10
-
0
-

#9 Jerry
V nadpisu napsal X86, zbytečně ho napadáš. Jinak, jestli chce vidět jak to vypadá v Assembleru X86, tak to do sekce Java nepatří, tazatel vybral správné fórum. Vypadá to, že je zvědavej, co je "pod kůží"

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 172 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý