Assembler x64 ( pomoc s domácím úkolem)

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
Zakk
Level 3
Level 3
Příspěvky: 477
Registrován: únor 13
Pohlaví: Muž

Re: Assembler x64 ( pomoc s domácím úkolem)

Příspěvekod Zakk » 23 dub 2018 21:00

Tak jak bych zapsal správně ten if ?
Porovnám rbx a rcx a když rbx je menší tak chci aby se provedlo " add dword ptr [rbx],1" a když není menší tak ne ( Podle toho zadání v javě).



Reklama
Uživatelský avatar
satik
Level 5.5
Level 5.5
Příspěvky: 3091
Registrován: leden 15
Bydliště: Praha / Krkonoše
Pohlaví: Muž

Re: Assembler x64 ( pomoc s domácím úkolem)

Příspěvekod satik » 23 dub 2018 21:15

label prikaz:
hod az za ten add a ten podmineny jump otoc, aby jsi ten add kdyztak preskocil
https://www.facebook.com/peasantsandcastles/
https://www.twitch.tv/satikcz/
https://www.youtube.com/c/SatikCZE
PC: Intel Core i7 8700K@5GHz+EK KIT L360, ASUS Maximus X HERO, 32GB RAM@3466, MSI RTX 2080Ti Trio, Fractal Define S, Seasonic P860, M2 1TB + 2TB SSD
Periferie: 3x AOC AG271QG (1440p 165Hz IPS), Razer Deathadder+Blackadder Chroma, Steelseries QcK+, Sennheiser PC360, DXRACER OH/KF06/NB

Uživatelský avatar
Zakk
Level 3
Level 3
Příspěvky: 477
Registrován: únor 13
Pohlaví: Muž

Re: Assembler x64 ( pomoc s domácím úkolem)

Příspěvekod Zakk » 23 dub 2018 22:01

Díky.
Udělal jsme to a určitě je to dobře.
Nejdřív jsme si to samotné vyzkoušle jak to funguje
mov rdx, 1
mov rsi, 2
mov rax, 1
mov rbx, 2

cmp rbx, rax
jb prikaz
call print_rdx
prikaz:

a podle toho jsme to pak zakonponoval i do to programu

nicméně mi to pořád háže při spuštění
" make: *** [Makefile:18: run] Segmentation fault (obraz paměti uložen)"
když to najede na ten řádek
" add dword ptr [rbx],1 "

Uživatelský avatar
satik
Level 5.5
Level 5.5
Příspěvky: 3091
Registrován: leden 15
Bydliště: Praha / Krkonoše
Pohlaví: Muž

Re: Assembler x64 ( pomoc s domácím úkolem)

Příspěvekod satik » 23 dub 2018 22:22

segfault na

Kód: Vybrat vše

add dword ptr [rbx],1

V RBX mas mit v tuhle chvili ukazatel na misto nekde v pameti, a snazis se na to misto v pameti ulozit jednicku, takze v rbx mas nejakou neplatnou adresu, kdyz to hazi segfault.
https://www.facebook.com/peasantsandcastles/
https://www.twitch.tv/satikcz/
https://www.youtube.com/c/SatikCZE
PC: Intel Core i7 8700K@5GHz+EK KIT L360, ASUS Maximus X HERO, 32GB RAM@3466, MSI RTX 2080Ti Trio, Fractal Define S, Seasonic P860, M2 1TB + 2TB SSD
Periferie: 3x AOC AG271QG (1440p 165Hz IPS), Razer Deathadder+Blackadder Chroma, Steelseries QcK+, Sennheiser PC360, DXRACER OH/KF06/NB

Uživatelský avatar
Zakk
Level 3
Level 3
Příspěvky: 477
Registrován: únor 13
Pohlaví: Muž

Re: Assembler x64 ( pomoc s domácím úkolem)

Příspěvekod Zakk » 23 dub 2018 23:25

už vůbec nevím, co s tím

ještě jsem zkoušel místo add 1 použít inc, ale to nic nezmění
schválně jsem zkusil dát do podmínky print a zacyklí se to.. skončí to ale vypíše to strašně moc řádků.

Kód: Vybrat vše

/
/*deklarace*/
pole: .quad 1, 3, 3, 5, 2, 4, 4, 4, 4, 3, 2, 2, 1, 5, 5, 6

hist: .quad 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

delka: .int 5                 /*nějaká "náhodná" čísla"*/
pocetBinu: .int 5              /*nějaká "náhodná" čísla"*/

/*program*/
lea rax, pole[rip]   /* pointer na začátek pole pole*/
lea rbx, hist[rip]     /* pointer na začátek pole hist,*/
mov rcx, pocetBinu[rip]    /* pocetBinu do rcx  */
mov rdx, delka[rip]  /* nastaví iterátor podle délky */

cycle:
mov rbx, [rax]  /*přiřadí do rbx,hodnotu pole na pozici i (kde je pointer), prvek=pole[i] */

add rax,8   /* posun ukazatele v poli o jedno místo */

cmp rcx, rbx  /*porovnání  pocetBinu a pole[i] */
jb prikaz         /*pokud je pocetBinu menší než pole[i] přeskočí následující příkaz*/
    inc dword ptr [rbx]      /* zvětšení hist na pozici kde je pointer o 1 (hist[prvek]++) */
prikaz:     /*skok sem */
 
dec rdx         /*zmenšení iterátoru* i++(respektive v našem případě i--)*/
jnz cycle        /*skok na cyklus*/

 /*tisk ?? hist */


Uživatelský avatar
satik
Level 5.5
Level 5.5
Příspěvky: 3091
Registrován: leden 15
Bydliště: Praha / Krkonoše
Pohlaví: Muž

Re: Assembler x64 ( pomoc s domácím úkolem)

Příspěvekod satik » 24 dub 2018 00:50

1.

Kód: Vybrat vše

add rax,8   /* posun ukazatele v poli o jedno místo */

tenhle kod te posune o dve mista, int (= DWORD = long) ma 4 bajty

2. vyhazel bych ty ripy, fakt si nejsem jistej, jestli tam nedelaji nejakej bordel
https://www.facebook.com/peasantsandcastles/
https://www.twitch.tv/satikcz/
https://www.youtube.com/c/SatikCZE
PC: Intel Core i7 8700K@5GHz+EK KIT L360, ASUS Maximus X HERO, 32GB RAM@3466, MSI RTX 2080Ti Trio, Fractal Define S, Seasonic P860, M2 1TB + 2TB SSD
Periferie: 3x AOC AG271QG (1440p 165Hz IPS), Razer Deathadder+Blackadder Chroma, Steelseries QcK+, Sennheiser PC360, DXRACER OH/KF06/NB


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • TV LG spárovat s domácím kinem LG
    od Miro22 » 03 dub 2018 09:11 » v Multimédia (filmy, hudba, CDs/DVDs)
    1
    1463
    od petr22
    03 dub 2018 09:34
  • Ovladače na Powercolor X1950GT 256MB, PCI-E (Windows 7 x64)
    od CyberCodeDroid » 24 říj 2018 05:08 » v Problémy s hardwarem
    4
    287
    od CyberCodeDroid
    24 říj 2018 10:39
  • Pomoc
    od Fabregas7 » 17 lis 2018 22:28 » v Design a grafické editory
    7
    1456
    od faraon
    18 lis 2018 07:39
  • Pomoc s makrem
    od Jan Lejsek » 29 kvě 2018 13:48 » v Kancelářské balíky
    1
    459
    od elninoslov
    29 kvě 2018 16:27
  • Pomoc s kompatibilitou
    od HonzaR33 » 13 čer 2018 13:46 » v Rady s výběrem hardwaru a sestavením PC
    11
    464
    od Michael850
    14 čer 2018 17:54

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: CommonCrawl [Bot] a 0 hostů