C

10 bejegyzés megtekintése - 11-20 / 81
  • Szerző
    Bejegyzés
  • #2078025
    slate
    Felhasználó

      Igazad van, meg kell érteni.
      Ahogy itt is olvashatjuk: http://www.joelonsoftware.com/articles/LeakyAbstractions.html

      És az asm tanulása ebben segít. Ebben is igazad van.

      Én csak azt mondanám, hogy szerintem van más út is. Ezt abból gondolom, hogy én nem tanultam asm-t, és szerintem értem.

      Dolgozom együtt C programozókkal, akik 40-50 évesek. Konkrétan én specifikálok nekik. Ők tanultak asm-t, nem volt választásuk:) Ők asm-re fordítják fejben a fogalmakat, habár évtizedek óta nem írtak semmit asm-ben. Nincs problémám a velük való kommunikációban, értem a problémáikat és tudok nekik segíteni. Én megértettem a K&R könyvből.

      Persze tanuljanak csak asm-t. Fiatalok, elbírják:)

      #2078026
      eReL
      Felhasználó

        Nos, a fő problémám az, hogy sohasem programoztam még, semmilyen nyelven sem. A’C’ az első nyelv, amit látok. Az egyetemen levelező programtervező informatika (Bsc.) szakra járok, ehhez kell a ‘C’. A levelezős konzultációk során írkálunk egyszerűbb programokat, azért, hogy a beugrón (ezt kell sikeresen megírni ahhoz, hogy vizsgázni lehessen), meg tudjuk írni az öt feladatból hármat. Elveket, működést, alig-alig tudtunk meg. Asm szintem meg pláne semmit.
        Azt hittem, hogy elég, ha a hasonló típusú feladatokat begyakorlom. Valószínűleg elég is lenne, de én nem az a típus vagyok, aki szereti bemagolni a dolgokat; sőt: utálom ezt. Én szeretném, sőt akarom megérteni. Egyre jobban érdekel ugyanis a programozás.

        Igazad van, vizsla, elég tömény, amit írtál, de az assembly jó 😀 .
        Csak rengeteg energia kell, hogy az ember autodidaktaként megtanulja. Dehát akit érdekel, az nemigen tehet mást 🙂 .

        #2078027
        slate
        Felhasználó

          Sok sikert. Lehet találkozunk majd valahol:)

          #2078028
          eReL
          Felhasználó

            Közben nézegettem a kódomat, így jól működik, bár nem teljesen értem az okát. Azonban nem tökéletes szintaktikailag (dob vagy 3 figyelmeztetést).

            #2078029
            pointux
            Felhasználó

              „assignment makes pointer from integer without a cast”
              Mutató: ahogy írtam mindig 32 bites, de amire mutat, az bármekkora. Ez hibát okozhat, mert
              *int = *long long int jó esetben seggfoltol… (mivel int 32 bites a long long meg 64)

              Nálad index [ x] egy mutató (index mutatótömb egy része) j, ill. j. pedig egy 32 bites (int) szám, melyet a fordító mutatónak vesz (pl.: j=0xE000000), akkor index[ x] a video memóriára fog mutatni, de nálad ez komplett marhaságot fog csinálni.
              Szerintem nálad így kellene, ha jól látom: index[oszlop][sor], mivel index[0]=0 rögtön a DMA 1. vezérlőre fog mutatni, ami nem a legszerencsésebb. 🙂

              #2078030
              pointux
              Felhasználó

                (Persze a 2D túlbonyolítja a feladatot, mert a memóriában úgyis 1 lesz, de mindegy… ezzel nem kell foglalkozni.)
                Így pásztázod végig:

                Code:
                for (j=0; j<maxY; j++){
                for (i=0; i<maxX; i++){
                elements[j][i];
                }
                }
                #2078031
                pointux
                Felhasználó

                  1D-ben, – ahogy szokás a számítástechnikában egyébként az ilyeneket:

                  Code:
                  for (i=0; i<n_elements; i++){
                    elements[i];
                  }
                  x = i % width;
                  y = i / width;
                  // Ez az index. Mellesleg ez gyorsabb asm-ben, mert itt csak egy utasítás, ez a kettő

                  A másik lehetőség:

                  Code:
                  for (i=0; i<n_elements; i++){
                    elements++; // elements[0] mutat az aktuális elemre
                  }
                  #2078032
                  pointux
                  Felhasználó

                    „passing arg 4 of `legnagyobb_index’ from incompatible pointer type”
                    Itt a C egy mutatónak a mutatóját várja, ehelyett kap megint egy konstanst.
                    Ez is azért csak figyelmeztetés, mert – naiv módon – úgy gondolja, hogy tudod, hogy mit csinálsz és tudod, hogy a mutató mutatója pont azon a memória címen van (kezdődik), melyet megadtál… de hátha mégse tudod… és ráhibázott :)))

                    #2078033
                    zoltan22
                    Felhasználó

                      En eljatszodtam egy kicsit a programmal, csatolom a (szerintem) helyes kodot.  A lenyeg az, hogy mindig el kell donteni, hogy mi hanyszoros mutato.

                      Esetleg lehet strukturakat visszateriteni (csatoltam a test00.c.txt-ben). Habar lehet hogy marhasag amit csinalok, ott, de nekem lefordult es le is futott. (habar nem tudom, nem-e fog elszegmentalodni, mert hat b egy helyi valtozo f-ben…  :unsure: )

                      #2078034
                      eReL
                      Felhasználó

                        Igen, úgy tűnik, ez a jó megoldás. Köszönöm mindenkinek. Biztos, hogy még találkozunk ezen keretek között 🙂 .
                        Miután kivilágosodott számomra vizsla rövid, ám annál tömörebb okítása.

                      10 bejegyzés megtekintése - 11-20 / 81
                      • Be kell jelentkezni a hozzászóláshoz.