JOKe Posted January 3, 2004 Share Posted January 3, 2004 predpolagam che pod linux prosto dosta chesto programata biva prekysvana btw vie ste ludi shto mtaka se fanahte s taia zadacha nachi naistina imalo developeri v toq warez ama se pak kvo mislite nad vaprosa : kak e zadachata za 1vi krag na olimpiada za 11ti klas pri polojenie che tezi hora na C++ sa oshte na cikal for .. btw ot liubopitstvo pod linux ako se zabrani programata izobshto da bade prekasvana t.e. da e ne maskiruema ( ne che znam kak no se sha moje ) kakva sha e razlikata 10x ako nqakoi probva Link to comment Share on other sites More sharing options...
Shiro Posted January 4, 2004 Share Posted January 4, 2004 Emi az sym 11 klas i nie sme vzeli CQLOTO C i sq uchim C++ (obekti, potoci ...). A btw to v taq programa osven for(; pochti nishto drugo ne ti trqa Atva deto go pitash ako razbrah kvo imash predviiid ... Kvo oznachava "da biva prekysvana". S Ctrl+C li Ili moje bi shtoto izpolzva prekaleno mnogo pamet ? Ili mai nito edno ot dvete Abe ... vij man signal, kill -l, nomerata na signalite, nauchi se kvo podava ctrl-c, ctrl-z i t.n. E naprimer Ctrl+C podava SIGINT. Ama kat ne ta znam kvo iskash da napraish ... Link to comment Share on other sites More sharing options...
lyubo Posted January 4, 2004 Share Posted January 4, 2004 Emi az sym 11 klas i nie sme vzeli CQLOTO C i sq uchim C++ (obekti, potoci ...). A btw to v taq programa osven for(; pochti nishto drugo ne ti trqa Atva deto go pitash ako razbrah kvo imash predviiid ... Kvo oznachava "da biva prekysvana". S Ctrl+C li Ili moje bi shtoto izpolzva prekaleno mnogo pamet ? Ili mai nito edno ot dvete Abe ... vij man signal, kill -l, nomerata na signalite, nauchi se kvo podava ctrl-c, ctrl-z i t.n. E naprimer Ctrl+C podava SIGINT. Ama kat ne ta znam kvo iskash da napraish ... Май JOKe като казва прекъсване има в предвид, че процесора я оставя за момент, обръща внимание на друго момиче и после се връща отново при нашата позната.... ЕДИТ: оправям си правописни грешки :=)))) Link to comment Share on other sites More sharing options...
BoardMan Posted January 4, 2004 Share Posted January 4, 2004 ... Kvo oznachava "da biva prekysvana". S Ctrl+C li Ili moje bi shtoto izpolzva prekaleno mnogo pamet ? Ili mai nito edno ot dvete JOKe може би има в предвид прекъсванията на операционната система при управление на процесите (нишки, семафори..). ДОС е еднозадачна операционна система (не че няма прекисвания, но те се случват точно в определени моменти при системните събития и спрямо многозадачните ОС са по-малко). Така че JOKe е много прав че под LINUX хавата може да се забавя от прекъсванията от другите процеси (а под QNX хавата ще е и по-зле предполагам). Link to comment Share on other sites More sharing options...
JOKe Posted January 4, 2004 Share Posted January 4, 2004 BroadMan lyubo tochno za tiq procesorni prekasvaniq govorih da zavisi si ot Os-a i linux naistina zaradi drugi neshta koito sa pusnati i za drugi procesi moje prosto da izchakva i se pak nali moje da se napravi programka koqto da zabrani da byde prekasvana ta ako moje na C++ shtoto as neznam kak ama sigorno moje nqakoi ako q napravi da proveri na linux kak varvi shtoto moje prichinata da ne e samo shtoto procesor-a chaka ami i ot neshto drugo koeto e dosta stranno ta ako se zabrani prekasvaneto na procesa da nemoje da se masquerva se sha svarshi po barzo a ako i pod windows i pod linux se sprat nqakak prekasvaniqta na procesora triia da svarshat ednakvo byrzo ZA CIALOTO C xaxa shtom kazvash cialoto C iasno e kolko ste nauchili pa i sq uchish C++ ? obektno orientiran i potoci ? potoci v C ne si li uchil ? pak i kak razgranichi tochno C ot C++ ne razbrah 1vo si nauchil cialoto C sq uchish obektno orientiranoto C++ e da ama ima i procedurno C++ koeto ne e bash 1kym 1 s C-to nego uchi li go ? pa za CTRL+C nqama kvo da kaja Link to comment Share on other sites More sharing options...
JOKe Posted January 4, 2004 Share Posted January 4, 2004 aa btw ako na C nemoje da se sprat prekasvaniqta mislq che na asembler moje taka che asm { ala bala } ne che znam kvo se pishe ama se pak ima nachin edita e shtoto bez da iskam dadah replay na sebe si hahaha Link to comment Share on other sites More sharing options...
kicko Posted January 5, 2004 Share Posted January 5, 2004 да ви бодна ли един избиващ рибата въпрос ? проблема е следния - имате 32 битово число X което като се умножи по 8088405h трябва долните 32 бита на резултата да са в интервала 8702AC00h-879A2D34h въпроса ми е може ли да се намерят сройности на X някакси по-елегантно, без брутални методи Link to comment Share on other sites More sharing options...
tedy Posted January 5, 2004 Share Posted January 5, 2004 не може. Най-малкото трябва да се обходи интервала, който си дал за долните 32 бита и за него може да се намират стойности за Х като се използва делене (остатък). Link to comment Share on other sites More sharing options...
Shiro Posted January 5, 2004 Share Posted January 5, 2004 JOKe: emi taq rabota stava s prioriteti. Sloji prioriteta na binary-to na max i vij kolko po-byrzo shte svyrshi (az lichno mislq che nqma da ima osobena razlika ... daje absurt da q usetish) tedy ... eee vednyj i ti da sbyrkash Aide pak da vi izvadq ... edna hitrost kicko: eto ti hint: neka imame chetiri 16bit chisla, a, b, c, d (a + 0x10000* * (c + 0x10000*d) = 0x100000000*b*d + 0x10000*b*c + 0x10000*a*d + a*c na teb ti trqbva 0x8702ac80 < ((b*c + a*d) & 0xffff) + a*c < 0x879a2d34 neka a=0x8405 i b=0x808 (nizha i visha tetrada ot 0x8088405)... a + 0x10000*b e tochno dolepenoto chislo (ba) 0x8405 + 0x10000*0x808 = 0x8080000 + 0x8405 = 0x8088405 kato umnozhavash dvete sumi i razpishesh poluchavash slednoto: v gornite 32bit-a na poluchenoto 64bit chislo imash b*d v dolnite 32bit-a imash a*c kum tova se pribavja b*c + a*d umnozheno po 0x10000 znachi dolnite ti 32bit-a sa a*c + ((b*c + a*d) & 0xffff) == a*c + (b*c)&0xffff + (a*d)&0xffff neizvestnite sa ti c i d znachi imash da namerish 2 takiva 16bit chisla c i d : 0x8702ac80 < (b*c)&0xffff + (a*d)&0xffff + (a*c) < 0x879a2d34, kato znaesh a i b dano da ne sym obyrkal nqkoq bukva ... (mnoo mi sa spi, she izvinqvate ako e taka). Ama taka kato si go proverqvam mislq, che sichko e qsno. Link to comment Share on other sites More sharing options...
tedy Posted January 6, 2004 Share Posted January 6, 2004 Shiro, честно казано и аз си мислех за подобен начин, но понеже ми се спеше ужасно (както и сега) не се замислих повече, а наум ми дойде само това. Все пак не се занимавам особено много със съсстезателно програмиране като теб Link to comment Share on other sites More sharing options...
kicko Posted January 6, 2004 Share Posted January 6, 2004 мерси много на мен не ми достига мозък да го разбера това, та камоли да го измисля и затова си го направих по тъпия начин и работи (!), но ми направи впечатление нещо друго което хич не ми хареса - не може ей така да си уможаваш 32бит числа и да получаваш 64бит с обикновенния оператор "*" ами трябва да търсиш някви забутани функции като Int32x32To64 (намерих я случайно след като си свърших работата вече) иначе като напиша c = a * b и съм дефинирал "a" и "b" като unsigned long а пък "c" като ULONGLONG или като __int64 на асемблер знаете ли как го превежда : mov eax, [ebp-0x34] ; това е "a" imul dword ptr [ebp-0x38] ; това е "b" xor edx, edx ; ах ти мръсник такъв !!!!!!!! mov [ebp-0x44], eax ; долните 32бита на "c" mov [ebp-0x40], edx ; горните 32бита на "c" защо нулира горните 32 бита не можах да разбера има си ги, получил си ги е от умножението, има си 64бит променлива където може да ги сложи, не му коства нищо да ги сложи там, щото и без това си слага EDX, ама той незнайно защо решава да ги изхвърли тези 32 бита компилатора е този на BCBuilder 5, да не би да иска някъде от опциите да се разрешат 64бит изчисленията Link to comment Share on other sites More sharing options...
tedy Posted January 6, 2004 Share Posted January 6, 2004 ами махни го това xor edx,edx или го напиши специално тези 2-3 реда на асемблер. шегувам се, ами вземи Визуал Студио-то, там може от раз да ти тръгне. Аз имам повече идея от Делфи, и там си има Int64, но и там нулира старшите 32 бита. пробвай на асемблер директно Link to comment Share on other sites More sharing options...
kicko Posted January 6, 2004 Share Posted January 6, 2004 ами махни го това xor edx,edx махането е най-малкия проблем, поне за мен просто се чудих защо не става по нормалния начин Link to comment Share on other sites More sharing options...
Shiro Posted January 6, 2004 Share Posted January 6, 2004 E ... az si misleh, che za C govorim ... long long si ima tam ... pa daje i unsigned long long Link to comment Share on other sites More sharing options...
sasquatch Posted January 9, 2004 Share Posted January 9, 2004 на асемблер знаете ли как го превежда : <!--QuoteEBegin-->mov eax, [ebp-0x34] ; това е "a"<!--QuoteEBegin-->imul dword ptr [ebp-0x38] ; това е "b"<!--QuoteEBegin-->xor edx, edx ; ах ти мръсник такъв !!!!!!!!<!--QuoteEBegin-->mov [ebp-0x44], eax ; долните 32бита на "c"<!--QuoteEBegin-->mov [ebp-0x40], edx ; горните 32бита на "c"<!--QuoteEBegin--> защо нулира горните 32 бита не можах да разбера Според мен не ги нулира Link to comment Share on other sites More sharing options...
kicko Posted January 9, 2004 Share Posted January 9, 2004 Според мен не ги нулира хм, интересно ми е да чуя мнението ти, а какво ги прави според теб ? ако говориш сериозно и не се шегуваш, значи асемблера доста през пръсти си го чел, в противен случай - очаквам продължението на вица Link to comment Share on other sites More sharing options...
tedy Posted January 10, 2004 Share Posted January 10, 2004 тука дори не му трябва асемблер, а да познава булевите фукнции Link to comment Share on other sites More sharing options...
djadomraz Posted January 12, 2004 Share Posted January 12, 2004 mov eax, [ebp-0x34] ; това е "a"<!--QuoteEBegin-->imul dword ptr [ebp-0x38] ; това е "b"<!--QuoteEBegin-->xor edx, edx ; ах ти мръсник такъв !!!!!!!!<!--QuoteEBegin-->mov [ebp-0x44], eax ; долните 32бита на "c"<!--QuoteEBegin-->mov [ebp-0x40], edx ; горните 32бита на "c"<!--QuoteEBegin--> Ami problema ti e che umnozavash 2 takiva chisla... Kogato pravish operacia nad 2 ednakvi obekta poluchavash drug takav obekt. Ot fakta che sa 2 broja 32 bitovi chisla sledva che trjabva da poluchish drugo takova chislo. A za da go zapishe vav 64 bitovo chislo sled tova ochevidno trjabva da se nulirat starshite 32 bita... I az sam psuval grozno na takiva maloumni izpalnenia. Spasenieto e da si cast-nesh chislata kakto trjabva. Naj-ochevidnia primer e : double x = 10 / 3; a poznajte kakvo shte e sadarzanieto na x ? 3.333333 ??? neeee ne poznahte!!! resultata e 3.00... poradi sashtata prichina : delim 2 celi chisla javno iskame resultata da e takav... za da poluchite pravilen resultat se pravi: double x = 10.0 / 3.0; cheers! Link to comment Share on other sites More sharing options...
djadomraz Posted January 12, 2004 Share Posted January 12, 2004 ами махни го това xor edx,edxили го напиши специално тези 2-3 реда на асемблер. шегувам се, ами вземи Визуал Студио-то, там може от раз да ти тръгне. Аз имам повече идея от Делфи, и там си има Int64, но и там нулира старшите 32 бита. пробвай на асемблер директно mda. sega obarnah vnimanie i na tozi post. abe momcheta vie helpovete i drugi podobni dokumentacii nikoga li ne chetete? verno pisaneto na asembler e hubavo neshto ama tochno za tozi sluchaj mi se vidi leko kato da grymnesh muha s chereshovo topche prosto shtoto si zabravil kade ti e vestnika (ili vaprosnia ured skovan ot djado ti ot parche darvo i malko koza za celta shtoto tia plastmasi deto gi prodavat obiknoveno za nishto ne stavat) Link to comment Share on other sites More sharing options...
tedy Posted January 12, 2004 Share Posted January 12, 2004 djadomraz, това с 10.0/3.0 всеки го знае, дори начинаещите се сблъскват с тази особеност на C. На Делпфи е съвсем различно затова няма да аналогизирам. И ми е интересно в какав смисал не четем ли хелповете? Интересно ми е да чуя с какво не си съгласен? И още нещо: процесора хич не е глупав когато умножава две 32 битови числа резултата е точно 64-битова стойност и той запазва резултата именно в два 32-битови регистъра - EDX:EAX, това ако не си го разбрал още, не знам защо постваш тука Link to comment Share on other sites More sharing options...
kicko Posted January 12, 2004 Share Posted January 12, 2004 tedy, absolutno e praw djadomraz, na men mi go obiasniha po sushtia nachin i za moia smetka si ostawa towa che ne sum go znael. abe kakto winagi se okazwa - ne e kompilatora za takowane, ami programista Link to comment Share on other sites More sharing options...
tedy Posted January 12, 2004 Share Posted January 12, 2004 tedy, absolutno e praw djadomraz, na men mi go obiasniha po sushtia nachin i za moia smetka si ostawa towa che ne sum go znael.abe kakto winagi se okazwa - ne e kompilatora za takowane, ami programista kicko, на djadomraz му признах, че е прав за компилатора и случая 10/3, нали казах, че всеки го знае това .. А и по-рано казах, че и в Делфи го прави същото с нулирането. А умножаването на 32-битови числа с асемблер поне го пробвайте и ще видите че работи, дори от вътрешността на Делфи (с точно 3 реда код)! Това ако оспорите, почвам да се съмнявам дали изобщо процесорите които съм имал не са били световен заговор срещу мене да умножават правилно 32бит х 32бит=64бит! И добре, кажи как да убием мухата с вестника, че не разбрах.. Не ми се е налагало да умножавам до с 64 бита ресултат, но например в Делфи как ше стане номера?? Link to comment Share on other sites More sharing options...
djadomraz Posted January 12, 2004 Share Posted January 12, 2004 Така е, сайтът им често не бачка. За него се грижат добри професионалисти, познавам ги, но като се има предвид, че сайтът е базиран на Java, не е за учудване, че често го няма .Макар, че там основно изучавахме именно Java като основна технология ,аз въобще не съм фен на тази технология, просто е много тежка, има доста бъгове (все пак е сравнително нова). njakak ne mi se struva na men osobeno profesionalno da izberesh bugava platforma. a i java-ta izobshto ne e tolkova nova kato tehnologia... fakta obache che govorim za universitet leko ogranichava budgeta i saotvetno mozete da si predstavite kakav internet imat... a da ne pochvam temata che kato cjalo v BG neta ne e koj znae kakvo i nejasno koga shte dojde vaprosnoto svetlo badeshte deto ot tolkova vreme go chakame..................... Link to comment Share on other sites More sharing options...
djadomraz Posted January 12, 2004 Share Posted January 12, 2004 djadomraz, това с 10.0/3.0 всеки го знае, дори начинаещите се сблъскват с тази особеност на C. На Делпфи е съвсем различно затова няма да аналогизирам.И ми е интересно в какав смисал не четем ли хелповете? Интересно ми е да чуя с какво не си съгласен? И още нещо: процесора хич не е глупав когато умножава две 32 битови числа резултата е точно 64-битова стойност и той запазва резултата именно в два 32-битови регистъра - EDX:EAX, това ако не си го разбрал още, не знам защо постваш тука viz sega kak mislish otnovo ot gledna tochka na asemblera. objasnih ti odeve che problema e che compilatora kato vidi 2 chisla ot edin i sashti tip i posle pri smetkite vrashta resultat ot tozi tip. znachi za compilatora umnozenieto na 2te 32 bitovi chisla trjabva da varne otnovo 32 bitovo chislo, nali taka? znachi za da zapishe resultata ot tova 32 bitovo chislo vav 64 bitovo chislo toj go dopylva sas nuli, saotvetno zatova go ima i vaprosnita xor. sja napravi si slednia experiment definiraj si 2 promenlivi ot tipa kojto iskash da poluchish. slagash v ednata stojnostta na parvia operand, a v drugata tazi na 2ria. togava gi umnozavash i gi prisvojavash na promenlivata kadeto iskash da poluchish resultata.... analogichno e na slednoto double a = 10; double b = 3; double c = a/b; ako imash obache: int a = 10; int b = 3; double c = a/b; resultata shte ti e greshen. smjatam che po-ocheviden primer ot tova njama nakade poveche svetna li ti sega kade tochno e problema i zashto compilatora vapreki che stojnostta na EDX e absoljutno pravilna toj ja nulira naj-maloumno? Link to comment Share on other sites More sharing options...
tedy Posted January 12, 2004 Share Posted January 12, 2004 Повтарям, че се грижат добри професионалисти, преподавали са ми, а това кой и защо е избрал платформата е друг въпрос. Като казах че е сравнително нова, имах предвид J2EE като платформа, а не Java, за което се извинявам. Не коментирам какъв нет имат, нито бюджета, това е ясно. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.