Oznámení

Sbalit
Aktuálně žádná oznámení.

Assembler - všeobecná logika

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    Kvůli příkladům k asm, které jsou jen na disketě bych potřeboval obsahy celkově 3 disket, které byly k časopisu Amiga Review a to obsah diskety z čísla 17,18-19 a 20.

    Díky!

    Vložit komentář:


  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
    Hneď 2. lekcia sa venuje vkladaniu obrázkou, preto som hneď začal s tou hudbou v rámci Octamedu,
    Zvlastna suvislost...

    Vložit komentář:


  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    OK, díky za info, kuknem na to nesystémové programovanie v rámci Amiga Review, možno sa tam o tom niečo bude písať. Hneď 2. lekcia sa venuje vkladaniu obrázkou, preto som hneď začal s tou hudbou v rámci Octamedu, ale jednoducho nestíhačka. Nechcem prebiehať, ale u toho asm sa zatiaľ bavím viacej jako u Pythonu. Na tom precvičovaciom príklade čo som uviedol som sa pobavil hneď 2 krát. Najskor som asi 30 minut ako idiot pozeral načo je tam tá inštrukcia BEQ, však poznánky sú blbosť nie? Jednoducho som tak nejak pozabudol na tú nulu na konci textu . No a potom ešte druhá situácia, nechcem to presne popisovať, aby som si zbytočne nezvyšoval skoré za napísanie nezmyslu, ale při tom teste ma pozdravila guru hláška. 3 krát chyba, 1 krát ma to vyhodilo hneď do WB ). No a keď sme už při tom mojom vtipkovaní, keď som si len tak letmo svetom pozeral tú PDF verziu knihy o asm, tak som tam pokiaľ sa nemýlim narazil na inštrukciu, ktorá zastavuje činnost procesoru až do prerušenia .

    Dúfam, že sa z toho nesystémového programovania neposeriem, lebo to možem zabaliť

    Ámen

    Vložit komentář:


  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Pamat si mozes alokovat pomocou sys funkcii este nez odstavis system...

    Vložit komentář:


  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
    ...a možem ísť nabudúce na alokáciu pamati .
    A, to je systémové prideľovanie pamati, ako to tak vyzerá, Amiga Review 8,9,10,11 možem zatiaľ preskočiť .

    Vložit komentář:


  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    Super díky obom, Obi skúsim neskor. Už mi je to jasné. Najvačší problém bola pitomosť, že RTS na konci programu musí ukončovať celý program a tak som nezklamal a opat to vyriešil mojou zvrátenou logikou . Preto som si RTS pod BSR pridružil k BSR aj keď som si vravel, že by mal byť na konci celého podprogramu, ale tam bolo RTS pre mňa ukončujúce celý program a tak som to pochopil zle. To bola taká posledná vec ktorú som z tohoto príkladu chcel pochopiť. Príkladu teda rozumiem k mojej spokojnosti a možem ísť nabudúce na alokáciu pamati .

    Vložit komentář:


  • ObiWanKen
    odpověděl
    O: Assembler - všeobecná logika

    Ak velmi tuzis po .b .w tak si spusti optimalizaciu prikazom AO z prikazoveho riadku.

    Vložit komentář:


  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Ked si to odkrokujes, tak by si to mal zbadat.

    Tu mas priebeh toho programu:
    1. krok - do a0 sa nastavi adresa retazca1 (lea)
    2. skoci sa na podprogram NajdiA (bsr), z ktoreho sa vrati vdaka rts na konci tohto podprogramu
    3. program pokracuje dalej za bsr, co je v tomto pripade rts a teda ukonci program

    Cize odpoved na tvoju otazku je nie. RTS za BSR NajdiA sa vykona ako posledne v celom programe.

    Vložit komentář:


  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    Code:
    ;=========================
    ;Tohle si taky odkrokujte v debuggeru 
    ;=========================
    
                  SECTION prg,CODE
    START         LEA retezec1(pc),a0
                  BSR NajdiA ;tím že neuvedu u bsr ".s" nebo ".w" nechám prostor assembleru aby to udělal sám (nebo mi vynadal)
                  RTS ;teď ve v D0 výsledek
    ;tady je testovací text ve kterém se hledá první "A" všimněte si že řetězce (stringy) se ukončují nulou
    retezec1      DC.b "To jsem zvedav jestli to tady"
                  DC.b " to A vubec najde!",0
                  CNOP 0,4 ;nezapomeňte udržovat začátky rutin aligned
    ;Tato rutinka chce jako parametr adresu stringu v A0 a vrátí v D0 adresu prvního znaku "A" (velké A) v tomto stringu nebo nulu pokud žádný nenajde.
    NajdiA          MOVE.l a0,-(sp) ;schovat původní A0
    .smycka       MOVE.b (a0)+,d0 ;načtu si znak, Z bude nastaven pokud načtu 0, která označuje konec stringu
                   BEQ .nenasel ;byla to nula - nenašel jsem A
                   CMP.b #"A",d0 ;bylo to "A"?
                   BNE .smycka ;nebylo-zkus další znak
                   SUBQ.l #1 ,a0 ;a0 teď ukazuje hned ZA A - spravit
                   MOVE.l a0,d0 ;do D0 adresu "A"
                   BRA.s .konec ;pokračuj ke konci
    .nenasel        MOVEQ #0,d0 ;nenašel - vracím nulu
    .konec          MOVE.l (sp)+,a0
                   RTS
    To RTS za BSR NajdiA se vykoná před RTS na konci programu?
    Naposledy upravil Lisiak; 25.02.2016, 19:43:33.

    Vložit komentář:


  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    No, som detailista. V rámci asm okrem toho S je len zatiaľ 1 vec ktorej nerozumiem. Ale to beriem ako fakt, že tak tá vec funguje a nemám potrebu ju riešiť. Takže okrem toho S nemám čo riešiť. Ja si zatiaľ B,W,L budem určovať pevne, neviem, prečo by som asm mal dávať v tomto voľnú ruku. Pri relatívných skokoch to vobec neni treba.

    Som z programovaia v asm lamer. V rámci napríklad vás dvoch z asm najhorší a úplne na začiatku. Ale názor mať možem. Python ma dosť naučil. Programovanie je exaktná vec. Kompromisy možu byť pri zdokonaľovaní sa. Potom už píšeš veci buď najlepšie, alebo horšie. Tam neni niečo ako toto je blbosť a nemusíš to vedieť. Tam buď vieš, alebo nevieš. A ten kto vie je lepší. Sú to presne stanovené pravidlá. A všetky tieto pravidlá sú podriadené schopnostiam programátora. A presne to je vec, kvoli ktorej se progrmovaniu venujem aj naďalej. Mám rád presne stanovené veci. Samozrejme na tie presne stanoveneé veci je sa treba pozerať s nadhľadom. Može byť aj niekoľko veľmi dobrých riešení a každé z nich može mať svoje + a -. Ty si veberieš svoje riešenie a pokúsiš sa ho urobiť najlepšie ako vieš.

    Píšem veci tak ako ich vidím teraz. Zajtrajšok je pre mna budúcnosť. Neviem, ako dlho ma bude programovanie baviť. Motivácia tam ale stále jednozančne je.Jeden z faktorov motivácie je, že si určite niekto myslí, že na to nemám. No a ja to tiež chcem zistiť, či tento člověk má pravdu. Zatiaľ nemám chuť nechať niekoho takého vyhrať, lebo chuť po tom to dokázať je vačšia, ako chuť potom opustit bojisko . Týmto by som chcel poďakovať všetkým, čo mi neveria .

    Vložit komentář:


  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Ja som zas toho nazoru, ze bra.s znamena pre niektore (slabsie) kompilery, aby dal co najmensiu hodnotu (.b .w .l) podla potreby, lebo bez zadania dlzky sa da v kompileroch dlzka nastavit napr. aby tam daval word, cize ked napisem move d0,d1 tak to podla nastavenia kompilera prelozi ako move.w d0,d1. Pri takom nastaveni ked dam bra skok , tak by to kompiler mohol chapat ako bra.w skok a pre to sa tam pise .s. Ale slusny kompiler by to mal upravit. Moj nazor, kazdopadne som bra.s v zivote nepouzil a ani nepouzijem...

    PS: A zase tu riesime taku zbytocnost...
    Naposledy upravil DJM; 12.02.2016, 19:55:41.

    Vložit komentář:


  • ObiWanKen
    odpověděl
    O: Assembler - všeobecná logika

    Na riadky to prepocitavat nemozes, ak budes mat 15000 riadkov len instrukciu RTS ktora ma dva bytes, tak vtedy ano. Ale realita je ina, instrukcie maju rozne velkosti takze riadky ako "mernu" jednotku pouzivat nemozes.

    Vložit komentář:


  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    Asi beru zpět ten dotaz, protože to asi nemáš vše v jedné SECTION...

    Vložit komentář:


  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    Je to len uhol pohľadu, viem, že to asm nastavuje. ...Áno až 020ka. Však som na to zavtipkoval s tou A1200 . Asi aj pri tých 15 tisícich riadkoch by mohol stačit relatívny skok v rámci W... ?

    Vložit komentář:


  • ObiWanKen
    odpověděl
    O: Assembler - všeobecná logika

    No a toto riesi kompilator sam. Ked nestaci .B tak da .W ak ani to da .L

    Skoda sa trapit niecim takymto. Tusim Bxx.L ani 68000 nepodporuje. Az vyssia rada CPU.
    Naposledy upravil ObiWanKen; 11.02.2016, 23:27:21.

    Vložit komentář:

Zpracovávám...
X