Kezdőlap › Fórumok › Programozás › C
- This topic has 80 hozzászólás, 19 résztvevő, and was last updated 17 years, 8 months telt el by
xcut.
-
SzerzőBejegyzés
-
2006-11-19-11:10 #2078025
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:)
2006-11-19-11:35 #2078026Nos, 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 🙂 .2006-11-19-11:39 #2078027Sok sikert. Lehet találkozunk majd valahol:)
2006-11-19-11:43 #2078028Kö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).
2006-11-19-11:56 #2078029„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. 🙂2006-11-19-12:01 #2078030(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];
}
}2006-11-19-12:07 #20780311D-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
}2006-11-19-12:11 #2078032„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 :)))2006-11-19-12:56 #2078033En 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: )
2006-11-19-13:54 #2078034Igen, ú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. -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz