Oznámení

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

Assembler - všeobecná logika

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

    #31
    O: Assembler - všeobecná logika

    Jo BRA je PC relativní skok. Jak pracuje asm s rozsahama byl nezvyk i pro mne (v rámci kladných a záporných číslel). OK, to že se S = B má větší logiku při napsání věty z AR "S nebo W", jako jsem si myslel já že S = W. Jo a neni to o tom, že je něco PC relativní, ale vše je relativní (dělám si asm legraci)

    Nějak bylo, nějak bude .
    Naposledy upravil Lisiak4; 11.02.2016, 12:42:34.
    Amiga - PMD 85

    Komentovat


      #32
      O: Assembler - všeobecná logika

      Pri skokoch Bxx vobec neries velkost, toto si obsluzi assembler/kompilator sam. Predsa nebudes pocitat ako "daleko" budes skakat a podla toho davat .b .w. priponu
      Naposledy upravil ObiWanKen; 11.02.2016, 21:20:46.
      MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

      Komentovat


        #33
        O: Assembler - všeobecná logika

        jasne vetsina kompilatoru na Amize to resi sama, nicmene jsou i takove, ktere to proste neumi a tam je to pak treba zadat rucne.

        Komentovat


          #34
          O: Assembler - všeobecná logika

          Tak pri týchto skúšobných programčekoch stačí snaď B, ale načo počítať, však dáš B a keď ťa asm prefacká, tak dáš W a nepredpokladám, že budem musieť dlhšiu dobu dávať L, čo ide v rámci PC relatívneho skusku len na 020ke. Načo by sme robili v rámci L absolutný skok na A600, keď A600 možeme dať do skrine a na stol položiť A1200
          Naposledy upravil Lisiak4; 11.02.2016, 22:10:03.
          Amiga - PMD 85

          Komentovat


            #35
            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, 22:27:21.
            MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

            Komentovat


              #36
              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... ?
              Amiga - PMD 85

              Komentovat


                #37
                O: Assembler - všeobecná logika

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

                Komentovat


                  #38
                  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.
                  MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

                  Komentovat


                    #39
                    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, 18:55:41.
                    Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
                    Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

                    Komentovat


                      #40
                      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 .
                      Amiga - PMD 85

                      Komentovat


                        #41
                        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 Lisiak4; 25.02.2016, 18:43:33.
                        Amiga - PMD 85

                        Komentovat


                          #42
                          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.
                          Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
                          Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

                          Komentovat


                            #43
                            O: Assembler - všeobecná logika

                            Ak velmi tuzis po .b .w tak si spusti optimalizaciu prikazom AO z prikazoveho riadku.
                            MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

                            Komentovat


                              #44
                              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 .
                              Amiga - PMD 85

                              Komentovat


                                #45
                                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ť .
                                Amiga - PMD 85

                                Komentovat

                                Zpracovávám...
                                X