1. |
(k++)*(k++) (mind) |
29 sor |
(cikkei) |
2. |
Re: proci tortenelem (mind) |
10 sor |
(cikkei) |
3. |
Assembly... (mind) |
29 sor |
(cikkei) |
4. |
VGA regs /mode X (mind) |
7 sor |
(cikkei) |
5. |
Re: forditas (mind) |
28 sor |
(cikkei) |
6. |
Re: R3-ABAP (mind) |
22 sor |
(cikkei) |
7. |
Re: Proci elnevezes (mind) |
46 sor |
(cikkei) |
8. |
Re: forditas (mind) |
26 sor |
(cikkei) |
9. |
Re: (k++)*(k++) (mind) |
15 sor |
(cikkei) |
10. |
Re: (k++)*(k++) (mind) |
17 sor |
(cikkei) |
11. |
Re: (k++)*(k++) (mind) |
55 sor |
(cikkei) |
12. |
SQL szerver (mind) |
16 sor |
(cikkei) |
|
+ - | (k++)*(k++) (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hello!
>A furcsa az, hogy kulombozo nyelvekben kulombozo
>eredmenyt ad vissza.
Egyaltalan nem furcsa az, mert a C-be nincs meghatarozva
hogy milyen rendbe van a kiertekeles.
>Peldaul (k++)*(k++) 12-ot ad vissza, ha k 3 volt. A
>vegso k ertek pedig 5 lesz.
Ennek ugyanannyinak kellene lenni akarmilyen forditoval, mert
jobbrol balra vagy balrol jobbra ugyanaz.
>Mi van akkor, ha csak k*(k++) irok ? Vagy forditva (k++)*k ?
Ez mar bajos, mert a compiler kertekelheti jobbrol balra VAGY
balrol jobbra, vagyis k a vegen mindig 4 lessz, de a kiertekeles
lehet 12 vagy 9, es ez teljesen normalis.
Ez a problema hasonlo az alabbihoz:
a[i] = i++;
Ez is mas eredmenyt ad mas compilerrel, vagy mas gepen!
Annyit tudok mondani hogy ilyen code nem a jo programmozasi
gyakorlat, mert nem tudod hogy fogja a compiler
leforditani. Legjobb ha egy ideiglenes valtozot hasznalsz
es pontosan ird le ahogy te akartad hogy leforditsa!
Udv.
Attila Voros, Chief Engineer, ISDgames
|
+ - | Re: proci tortenelem (mind) |
VÁLASZ |
Feladó: (cikkei)
|
> A 80286-os processzort az az igeny hozta eletre, hogy PC-ken
> [...]
> Ket mukodesi modja van, amint ezutan keszult 8X86-osoknak is:
> - Real - 100%-ban kompatibilis a 8086-tal.
> - Protected - A tobbfelhasznalos es tobbfeladatos alkalmazasokhoz
Ehhez csak egy apro kiegeszitesem lenne: a 80386 es kesobbi procik
protected modja nem kompatibilis a 80286-eval.
Miki
|
+ - | Assembly... (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hali !
Erdeklodessel olvasom a most kialakult vitat.
Megjegyzem, eddig is "elegedett" voltam az
iseretterjesztessel, de ezt latvan total ki vagyok akadva...
Magyar nyelvu doksikat tudnek ajanlani a temahoz :
Dr. Kovacs Magda 32 bites mikroprocesszorok 386/486 II.
Szinte barmely konyvesboltban fellelheto. A pentium c. konyvet
meg nem vettem meg, mert gyanus, hogy a pentium.doc file-ban
ez van leirva...de nemtudom honnan szereztem, HKK kb. 3MB
(tomoritetlenul). Erdekes es erdemes beszerezni ezeket.
Ezen kivul az intel utasitaskeszletet - ebben a pentium, MMX, SMM
meg minden benne vagyon - tudom ajanlani, az opkod
"feldolgozasanak menetet" is tartalmazza!, ez .pdf-ben van. HKK
szinten par mega, de angol nyelvu...
Lenne a temahoz par kerdesem - keresem - picit offtopic...bocsi :
- hol lehet fellelni tesztprogramok forrasait, gondolok itt IBM PC-s
hardwer-tesztprogramokra, diagnosztizalokra ?
peldau: HWiNFO 95-99 - Martin Malik REALiX (tm) Bratislava
Meg nem kommunikaltam vele, de ezenkivul lehetoseg ?
Kimeljetek a visszaforditastol...
- vannak magyarhonban assembly-s (nem csak PC-n) melohelyek ?
Esetleg tavmunkaval ? Na ezt azert maganban, nem akarok balhet..:))
Koszi a valaszokat !
Jo szorakozast !
Gusi
|
+ - | VGA regs /mode X (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hello!
Van 1 kis problemam. Szeretnek VGA-t programozni
(legalabb azt) de nem igazan van ertheto leirasom
a regiszterekrol...
Ha valaki tud segiteni ,kerem kuldjon egy doksit a
"" -ra
Elore is kosz!
|
+ - | Re: forditas (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Szia!
Nem igazan akarok a szorszalhasogato hitvitaba belefolyni :-)
>Mondom, nezetkulonbseg. Szerintem az utasitas akkor utasitas, amikor
>ugyanazt a muveletet vegzik el, esetleg mas operandusokkal. Ugyanugy, ha
>van egy C fuggvenyed, akkor nem tekintheto mas fuggvenynek, ha mas
>parameterekkel hivod meg. Tulajdonkepp meg akkor is egy azon fuggveny, ha
>pl. C++ -ben mas szamu ill. tipusu parameterekkel hivod meg, ami
>ilyenforman kulon van deklaralva -- tehat fizikailag mas fuggvenyt hivsz
>meg. Pl. a mov es, ax utasitasnak egeszen mas az _utasitas_ mezoje, mint a
>mov cx, ax -nak... Megis "ugyanazt" a muveletet vegzi , viszont mas
>parameterekkel es raadasul egeszen masfajtakkal, tehat jogos is, hogy mas
>a kodja.
En annakidejen ugy tanultam, hogy egy_gepikodu_utasitas_ 4 reszbol
tevodik ossze: prefix, opkod, cimzesi mod byte es operandus.
Ez az egyseg.
Szerintem a C fuggvenyes hasonlat, es ezzel az ervelesed alapja
santit, mivel az utasitas fogalmat azonosnak veszed az opkod-eval,
holott az a gepikodu utasitasnak csak egy resze.
Legalabbis en igy tudom... de igy is logikus, mivel semmi ertelme egy
MOV-nak cimezi mod es/vagy opeandus nelkul. Ez olyan lenne (sajat
peldadnal maradva) mint amikor a fuggvenyhivasbol kihagyod az aktualis
parametereket - es a fordito is hibat jelez ilyenkor...
Udv
ZsZs.
|
+ - | Re: R3-ABAP (mind) |
VÁLASZ |
Feladó: (cikkei)
|
> A fent emlitett nyelven lenne szuksegem segitsegre.
> SELECT-OPTIONS -nal, hogy lehet megoldani, hogy a szelekcios
> kepernyon egy mezot ne lehessen modositani, de jelenjen meg.
> Erteke a programbol DEFAULT-tal be van allitva.
Megoldas:
SELECT-OPTIONS PARTNER FOR BUT000-PARTNER.
INITIALIZATION.
LOOP AT SCREEN.
IF ( SCREEN-NAME(7) = 'PARTNER'
OR SCREEN-NAME+2(7) = 'PARTNER')
AND SCREEN-INPUT = '1'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
Sok sikert,
Joe
|
+ - | Re: Proci elnevezes (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 2 Dec 99 at 17:41, Miha'ly wrote:
Csak nehany apro pontositas:
> A 8086-os (iAPX 86) processzor mar valodi 16 bites proci volt, de
> ujra assembalas utan futtatni lehetett rajta a 8080 programjait is
Ujra-assemblalasnal azert tobb kellett hozza, de mindenesetre elvileg
at lehetett tenyleg alakitani 8080-as forrast 8086-osra egy egyszeru
programmal.
> Az IBM erre processzorra epitette elso szemelyi szamitogepet. Ez a teny
> nagyban befolyasolta azt, hogy maig ezek leszarmazottait hasznaljuk.
> Kijott meg egy processzor 8088 neven, a 8086 utasitaskeszletevel, amely
Valojaban az elso IBM PC 8088-asat hasznalt, nem 8086-osat
> A 80186 es 80188 processzorok gyakorlatilag 8088 es 8086-osok,
> amelyekkel nehany fontos periferiat egybeepitettek, lehetoseget
> teremtve ezzel meg kisebb gepek epitesere. Ezekre a processzorokra
> nem epult PC, viszont sok vezerlo elektronikaban (pl. CNC
Epult beloluk PC is :) Ha jol emlekszem, Olivetti gepekben volt
80186-os proci.
> A 8X86 processzorcsalad elso valodi 32 bites tagja a 80386.
Nem 8x86, hanem 80x86 a szokasos roviditese a csaladnak.
A 386-oshoz meg annyit tennek hozza, hogy a 32 bites belso szervezes
meg a lapozasos virtualis memoria technika mellett a masik fontos
tulajdonsaga a virtualis 86-os mod volt: Az intel rajott arra, hogy
hiaba csinalt a 286-osba protected modot, nem hasznalja senki, ezert
kitalalta a V86 modot, aminek a segitsegevel parhuzamosan tobb DOS-t
lehetett futtatni (windows dos box-ok, stb.). Ez annyira sikeres
lett, hogy azota se lehet tole megszabadulni sajnos :)
> Virtualis cimtartomany 64 TB, 4 GB cimtartomanyu fizikai tarra
> lekepezve.(Protected modban)
Az a 64 TB kicsit felrevezeto... OK, elvileg tenyleg annyi jon ki a
maximalis 16ezer szelektorral, darabonkent 4G eseten, de akkor az
osszes szelektor ugyanarra a memoriara mutat. Szoval szerintem
maradjunk a 4G-nel.
István
|
+ - | Re: forditas (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 2 Dec 99 at 16:29, wrote:
> Teljesen igazad van, csak en az egy utasítason a ADD CX, 1-sort
> ertettem (szerintem így, egy osszetartozo egesz), s nem onmagaban a
> ADD-ot. Es ebbol csak egyfele gepi kod keletkezhet, vagyis egyazon
> assembly forrasprogrambol csak egyfele gepikod allhat elo (mar ha
Bizonyara van olyan processzor, aminel ez igy igaz, az intel 80x86
procik eseteben viszont nem, pl. mar az eredeti 8088-asnal is egy
csomo atfedes van (386-tol kezdve meg tobb) :
add cx,1 ; 81 c1 01 00 vagy 83 c1 01
add ax,1 ; 81 c0 01 00 vagy 83 c0 01 vagy 05 01 00
or ax,cx ; 09 c8 vagy 0b c1
stb.
Mindez viszont nem sokat valtoztat az eredeti kerdesen, akkor se
valtoztatna, ha eppen nem lennenek ilyen atfedesek: nemcsak, hogy
kulonbozo nyelven megirt programokbol nem keletkezik ugyanaz a gepi
kod, de ha pont ugyanazt a forrast leforditod mas-mas ember altal
keszitett forditoval, akkor is oriasi kulonbsegek lehetnek pl. attol,
hogy mennyire okosan optimalizalnak a forditok.
István
-- Istvan Marosi -- http://www.sch.bme.hu/~marosi --
-- Recosoft Ltd. -- mailto: --
|
+ - | Re: (k++)*(k++) (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 2 Dec 99 at 3:33, wrote:
> Hogyan mukodik a cimben megadott kifejezes ! A furcsa az, hogy
> kulombozo nyelvekben kulombozo eredmenyt ad vissza.
Az ANSI C szabvany szerint definialatlan, hogy pontosan mikor
tortenik a valtozo modositasa: kozvetlenul a valtozohoz valo
hozzaferes utan (ill. elott ++k eseten), vagy a kifejezes
kiertekelese utan (elott). Szoval minden fordito ugy csinalja, ahogy
neki tetszik (sot, ez meg attol is fugghet, hogy hasznalsz-e
optimalizalast).
Ilyesmiket egeszsegtelen hasznalni :)
István
|
+ - | Re: (k++)*(k++) (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hello Joco!
A kifejezest inkrementalo operatornak hivjak, ami lehet prefix es postfix
egyarant. A lenyege:
k++ megfelel a kovetkezo ket sornak: k (valamilyen muvelet a k-val); k=k+1;
[postfix]
++k megfelel a kov. ket sornak: k=k+1; k (valamilyen muvelet a k-val);
[prefix]
Ezek utan mindenfele hasonlo kifejezest egyszeru ertelmezni.
Ezek az operatorok _egysegesek_ (vagy azoknak kellene lenniuk) az osszes C
es C++ fordito eseteben.
Udv
Imi
|
+ - | Re: (k++)*(k++) (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Sziasztok,
g++-szal kiprobalva az a meglepetes ert, hogy a kifejezes erteke 9.
c++-ban a fuggvenyek argumentumainak kiertekelesenek a sorrendje nem
definialt, barmi lehet, tehat
void f(int i,int j)
{
cerr<<i<<" "<<j<<endl;
}
int k=3;
f(k++,k++);
hogy ez a programreszlet mit ir ki, az a forditotol fugghet. az output
lehet
3 4
vagy
4 3
na ez egy kis kitero volt.
int f(int i,int j)
{
return i*j;
}
int k=3;
cerr<<f(k++,k++)<<endl;
ennek az eredmenye 12 volt (ahogy azt varni is lehet). ugyanis itt
mindegy, hogy az argumentumok milyen sorrendben ertekelodnek ki.
ha elobb az elso ertekelodik ki, akkor az f(3,4)-gyel egyenerteku,
kulonben pedig az f(4,3)-mal.
az a teny, hogy a
cerr<<(k++)*(k++);
eredmenye 9 volt, szamomra azt jelenti, hogy a matematikai muveleteket
a fordito (legalabbis a g++) nem normalis fuggvenynek
(operator *(int,int))
tekinti, hanem nyilvan van egy optimalizalas, stb stb...
ezek utan engem is nagyon erdekelne, hogy a szabvany mit ir elo, es melyik
viselkedes a helyes.
udv
dani
> A furcsa az, hogy kulombozo nyelvekben kulombozo eredmenyt ad vissza.
>
> Peldaul (k++)*(k++) 12-ot ad vissza, ha k 3 volt. A vegso k ertek
> pedig 5 lesz.
> Mindez igy mukodik Borland C++ 3.1-ben.Viszont Visual C++ 5.0-ban mar
> kulombozik.
> Sajnos az ottani eredmenyekre mar nem emlekszem.
|
+ - | SQL szerver (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hello!
Tudja valaki, hogy hogyan lehet MS SQL 7.0 Server uzeneteit elfogni
Delphibol? Van pl. egy "on delete" trigger, ami ha van a torlendo
rekordra hivatkozas, akkor raiserror-t general es rollback
transaction-t hajt vegre.
A szerverrol kozvetlenul torolve meg is jelenik a kivant hibauzenet
egy messagebox-ban, de Delphibol vegrehajtva a torlest nem jelenik
meg semmi, csak 'general SQL error' hiba generalodik, amivel attol
tartok a leendo felhasznalo nem megy majd tul sokra. Az altalam a
sysmessages-ben definialt, es a trigger altal meghivott hibauzenetet
nyilvan valahogy atadja a server a Delphinek, de ezt hol tudom
elkapni, hogy ki tudjam iratni?
Norbi
|
|