Kezdőlap › Fórumok › Vegyes felvágott › Melyik Linux való nekem?
- This topic has 17 hozzászólás, 4 résztvevő, and was last updated 14 years, 6 months telt el by
pointux.
-
SzerzőBejegyzés
-
2010-12-10-20:57 #2201633
Ő is kereste:http://hup.hu/node/88598
2010-12-10-21:11 #2201634Az ?S, pedig nem szelektor, hanem CPU register. És nem azonosak, hanem bármilyenek lehetnek.Azon kívül a linugz hekkelés nélkül minimum 32 bites módot kíván, nem támogatja a 16 biteset, csak max. emulálja.Úgyhogy neked nem jó a linugz.Azon kívül a linugz az új hw-eket sem támogatja. Úgyhogy ezért sem jó neked.Sőt, a windows specifikus c forrásaid sem valószínű, hogy használhatóak lesznek.
2010-12-10-21:25 #2201635Jesszusom! Mi/ki van itt ?! Azt sem tudom hirtelen kinek az alteregója vagy öregem ?! 🙂 A Debian jó választás, visznemlát! /created by mingyar/ UI: Talán be is zárhatjuk a topikot ! 🙂
2010-12-10-21:36 #2201636Benezárd!Üzenem a topiknyitónak: a másik fórumban olyan gyér a forgalom, hogy esélyed nincs ott választ kapni.Kérlek, ha tényleg használni fogod a linugzot, akkor gyere vissza ide, biztosan lesz debiános, aki tud neked válaszolni.Deazonban nemmelesleg: többen felszisszentünk az elvárásaid láttán.Nem tudom, használtál-e ezelőtt más operációs rendszereket, mindenesetre a listád nem kicsit maximalista.Próbálj ki egy piacon levő oprendszert, és nézzük meg egy fél év múlva, van-e olyan, ami 60%-ban teljesíti a feltételeidet.
2010-12-10-22:27 #2201637PPPoE protokollos internetem van (LAN alapú DIGI, nincs semmi ADSL meg egyéb, UTP kábel a lépcsőházban levő elosztódobizig, onnantól optikai).Ez valami olyat jelent hogy TCP/IP kapcsolat Etherneten keresztül.Vagyis Etherneten (UTP) kapcsolódok egy másik számítógéphez, és azon keresztül jön az internet.Azonosító és jelszó kell hozzá, de azt titkosítatlanul küldi.Az IP-cím dinamikus, gondolom DHCP.Ez a Windows-ban úgy van beállítva hogy még a DHCP szerver IP-címét is attól a számítógéptől kérdezi le amelyikkel UTP-n keresztül kapcsolatban áll. Ez a DIGI számítógépe vagy routere a fejállomáson. Még a Top Level DNS kiszolgáló címét is.Megpróbál csatlakozni, de utána kiírja hogy vagy azonosító kulcs vagy valami más kell neki. Az meg ugye nincs, csak azonosító meg jelszó.A súgóban rákerestem a PPPoE-re: említve sincs benne ez a kifejezés.Van még 2 NTFS partícióm, rajta adatok. De mindig azt írja ki hogy hibás paraméterek a csatolásnál. Jobb egérgomb se segít.Ha kell, készítenék képeket arról amit a képernyőn látok és elmenteném floppyra vagy pendrivera.A DIGI honlapján levő sajnos nem segített. Ubuntura van, ott úgy kell hogyRendszerBeállításokHálózati kapcsolatok: na az nincs.Átnéztem egy csomó mindent, de sehol sincs.Ahol ki tudom választani az ethernet kártyát, ott azt írja nincs jogosultságom beállítani. A grafikus felület root-ként nem enged be.Karakteresen meg szintén nincs jogosultságom, rootként pedig sudo ugyan van, de sudo pppoeconf már nincs.Ott is a Print Screen billentyűvel kell?Egyenlőre csak olyan képet tudok mutatni hogy XP-n hogy lehet csatlakozni.Ezt a hozzászólást is nyilván XP-n írtam.Azt egyébként nagyon jól tudom hogy az ES CS SS DS FS GS regiszter.Szegmensregiszter, ezek pedig még 64 bites módban is PC-n 16 bitesek.Ami benne van 16 bites szám, na az a szegmens szelektor.XP-n ES = SS = DS, az FS-ben a kivételkezeléshez vagy egy 4KB-os terület, az FS talán 0.És attól hogy más a szelektor, még ugyanaz a szegmens kezdőcíme (ezt a GDT-ből olvassa ki ami a memóriában van). Tehát ha assemblyben az SS: prefixszel beírok valamit, azt a CS: prefixszel is ki tudom olvasni.Van egy valami Student Tools CD a Visual Studio-hoz. Abban van egy olyan projecttípus hogy C/C++ Console Application. Azt szerintem még a parancssoros GNU is lefordítja, és a programjaimat abban írtam. Csak az assembly betéttel nem tudom mit kezdene a fordító (beírom a .cpp file-ban hogy "asm {" és utána assembly kódot írok a .cpp file-ba. }-tal zárom.
2010-12-11-06:38 #2201638Jó, csak, mert ilyeneket írogatsz:
Alapfeltétel tehát, hogy bár a CS szelektor más mint a DS, SS szelektor
úgy gondoltam, hogy azt hiszed, hogy ezek szelektorok, pedig regiszterek... és, ha akarom, akkor a betű színe. 😀Hivatalos nevén a CS az kód szegmensregiszter (Code), a DS az adat (Data), SS, a verem (Stack), az E, az extra adat (Extra), az FS, és GS, pedig ABC sorrendben követi az E- betűt. (De a hivatalos név ált. nem kötelez arra, hogy mire használod.)Ezek nem függenek össze, bármik lehetnek. A kód nyilván a kódra mutat, megszakításoknál, kivételeknél stb. a verem, a veremre, a többi meg mindegy. És egyébként is az, amit beleírsz (főleg mivel gépikódról beszélsz). És nyilván bármi is lesz, hisz pl. megszakításnál legalább egy át is lesz írva és különbözni fog a többitől.Az meg, hogy az XP függvényei... akárhol ... milyen értékekkel töltik fel a szegmens regisztereket, az téged nem zavar, mert assemblerben írod a programot. akkor miért zavar? (Azon kívül, hogy hülyeség lenne egymáshoz hangolni a regisztereket, mert felesleges időpocséklás? Ergo, épp ezért nem i tartom valószínűnek, de lehet, hogy ettől lesz "komolyabb" renccer.)Igen, ez igaz a szegmensregiszterek un. védett módban nem báziscímeket tartalmaznak, hanem leíró táblázatokra mutatnak. és mindaddig elég a 16 bit, ameddig kb. 8000 táblázat elég.William Gates mondja: 8192 descriptor-táblázat mindenre elég.Kivételkor, melyik regiszterhez hangolódik a többi? Csak azért, mert minimum a veremregiszternek értelmes helyre kéne mutatni, különben minek "jelezni" a kivételt, ha úgysem tudsz a nagy semmi miatt bármit is csinálni.
Van egy valami Student Tools CD a Visual Studio-hoz. Abban van egy olyan projecttípus hogy C/C++ Console Application. Azt szerintem még a parancssoros GNU is lefordítja, és a programjaimat abban írtam.
Ez attól függ, hogy szabványos C függvényeket használ, vagy nem. Nem tudom, soha nem használtam ilyesmit.
2010-12-13-21:07 #2201639Válasz: CS szelektor alatt a CS-ben levő szelektort értem, és felhasználói program futása közbeni állapotról írtam. Fogalmam sincs mi van amikor a kernel megy.Nagynehezen sikerült internetet varázsolnom a Debianra, de adatvégrehajtás az nincs rajta, kipróbáltam.Én olyan programot fejlesztek amihez feltétlenül kell adatvégrehajtás.Az is lehet hogy a kernel tudja ugyan, de a linker úgy van beállítva hogy nem úgy linkeli.A cc --help és az ld --help nem segített. A weben fentvan a man ld(1), abban van ugyan execstack de az nem az, ugyanúgy szegmenshiba: cc -z execstack dataexec.cA seg szórészletre rákeresve említve sincs a man ld(1)-ben.Előszöris tehát az lenne a kérdésem, hogy átállítható-e valahogy a linker hogy a kód és a dinamikus memória 1 szegmensben legyen? Mivel egy szegmens nem lehet egyszerre végrehajtható és írható, nyilván a CS-ben és a DS-ben más lesz a szelektor, de a védett mód miatt ettől még a 2 szelektor mutathat ugyanarra a szegmensre (a GDT-ben vagy az LDT-ben a szegmens kezdőcíme ugyanaz).Természetesen ha a kernel nem hajlandó végrehajtani az ilyen binárisat akkor az az operációs rendszer nekem nem jó, ha hajlandó ugyan, de nincs rá olyan linker ami ilyen binárisat készít akkor szintén nem jó.Van olyan Linux ami hajlandó olyan binárisat végrehajtani amiben a kód és a dinamikus memória 1 szegmensben van? És ahhoz van olyan linker ami ilyen binárisat is tud csinálni?Nekem valami nyílt forráskódú ingyenes operációs rendszer kellene. Linux, OpenSolaris vagy valami hasonló.Amely támogatja az önmagát módosító kódot az valószínüleg az adatvégrehajtást is támogatja.Esetleg nyissak neki egy külön témát?Olyan programoknál kell adatvégrehajtás mint például a .NET: ez egy képzeletbeli gép gépi kódján van. Amikor meghívunk egy rutint, akkor a .NET lefordítja a rutint és úgy hajtja végre (legalábbis Windows-on). Linuxon is van már .NET és C# is. Emulátor helyett is lehet olyan hogy lefordítja (amivel nem IBM PC kompatíbilis gép programját lehet végrehajtani, illetve Windows-, Macintosh-emulátor.Ebben a kódban a TAB mérete 4 szóköz (erre nincs szükség a kipróbálásához). Fordítás:cc dataexec.cVégrehajtás:./a.outA warning-ok nem számítanak a fordításnál csak az error. Ha 64 bites fordítóprogramunk van állítsuk át 32 bitesre. Ha elindul és hiba van de nem szegmenshiba, akkor lehet hogy megy akkor ha az operációs rendszert úgy állítjuk be hogy ne akadályozza meg az adatvégrehajtást az NX bittel. Mivel 64 bitesen PC-n nincs lapozás, ott az lenne a feltétel hogy beállítható legyen úgy hogy ne akádályozza meg az NX bittel, de 32 bites CPU-m van, így 64 bites operációs rendszer nem jó.Megkérem a fórumozókat hogy próbálják ki és írják meg ide hogy ment-e nekik és hogy milyen Linuxon próbálták.
Code:// Ez a program 32 és 64 bitesen is megy, de csak IBM PC kompatíbilis számítógépen// Egyes fordítóprogramoknál lehet hogy ki kell szedni valahány #include-ot, lehet hogy az összeset#include #include typedef unsigned int nat20;typedef unsigned long long int nat40;// A p címen levő adat végrehajtása, paramétere és kimenete nincs#define dataexec(p) ((*((void (*)()) (p)))())// 4 MB 4 byte-os elemméretű tömbben#define index4 (1<<20)// Az adatterületen levő kódnat20 tomb[2*index4+2];// Ciklusszámlálónat20 i = 0;int main() { if (sizeof(&i) != 4) { printf("Nem 32 bites üzemmódban vagyunk !n"); if (sizeof(&i) != 8) { printf("%u bites üzemmódban e program nem működik, csak 32 és 64 bitesben.n", sizeof(&i) << 3); return 0; } } tomb[index4] = 0x2604FE90; // NOP; INC [constant] (RIP-relatív címzés nélkül) tomb[index4+2] = 0; // Kezdőérték annak ellenőrzéséhez hogy a cím elfér-e 32 biten *((nat20 **) (tomb+index4+1)) = &i; // i címe az "INC i" utasításhoz // Elfért-e 32 biten a cím? if (tomb[index4+2]) { printf("4 GB-ot elérő cím miatt nem tudom kipróbálni az adatvégrehajtást.n" "Állítsuk át a fordítóprogramot 32 bitesre és úgy próbáljuk.n"); return 0; } tomb[index4+2] = 0xC3; // RET (NEAR) és utána 3 darab 0 ami a RET miatt nem hajtódik végre printf("Kísérlet globális változóban levő program végrehajtására.n"); for (; i < 10; ) { dataexec(tomb+index4); // i++; printf("%un", i); } char *p = ((char *) malloc((1<<23)+8)) + (1<22); p[0] = 0xFE; // INC p[1] = 0x04; // mod=0, 0, r/m=4: SIB byte következik (64 bites üzemmódban kikapcsolja a RIP-relatív címzést) p[2] = 0x26; // SS=0, INDEX=4 (vagyis nincs), BASE=6: mod=0-val együtt jelentése: [konstans] *((nat20 **) (p+3)) = &i; p[7] = 0xC3; // RET (NEAR) printf("Kísérlet dinamikus memóriában levő program végrehajtására.n"); for (; i < 20; ) { dataexec(p); // i++; printf("%un", i); } printf("Kész, sikerült !n"); return 0;}2010-12-14-15:07 #2201640Hát, ha folytatjuk, akkor lehet, hogy nem ártana egy új téma a programozásban.Na, magyarán szólva azt akarod, hogy a kód és az adatszegmens egy területen legyen (pl.: flat modell is ilyen).A GCC alapvetően így fordít.Hát, akkor nézzük a pornót hexában:[bash]cat test.c #include int main () {
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz