Hollosi Information eXchange /HIX/
HIX CODER 661
Copyright (C) HIX
1999-12-04
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
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

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS