» »

eno vprasanje na kratko

eno vprasanje na kratko

cahahopie ::

ASCII ..torej.
Torej če bi vsi pisali točno po določilih tega standarda, potem... bi določen program oz. OS delu na vsaki platformi, ki bi bila vsaj podobno zmogljiva? (PC, Mac, Amiga, itd..)
Ali... ne? Vem, da se podatkovni tipi lahko razlikujejo po velikosti od platforme do platforme. A je to tud razlog, da ne dela program na drugi kišti.
Zakaj hudirja Java laufa na vsaki?
En kratek odgovorček prosim.:D
Hmm.. men se meša od bukev (zakaj ni nobenga takšnega smilija?) in upam, da se nisem osmešil.:D

Loki ::

java ne lavfa V NOBENEM sistemu, ki nima namescenega Java Runtime Environment (>JRE), pr enih je lohk ze po default, na vecin ga je pa treba namestit.
Poleg tega pa java ne uporablja klicev, ki so specificni za nek OS (npr. WinAPI).

Vsi programi ne lavfajo na vseh sistemih zato, ker so compilerji nastavljeni tako, da source scompilajo sam za en sistem, da pride pac (veliko) manjsa datoteka. (sej noces worda, ki bi zasedel 7gb, kajne?)

Sicer mamo pa tut programe, ki lavfajo na vec platformah brez kaksnega dodatnega truda - primer je en virus, a se trenutno ne spomnim vec kateri.
I left my wallet in El Segundo

cahahopie ::

Torej... če bi npr. en program napisu na "roke" recimo v beležnici v binarni kodi (kar je praktično nemogoče) bi potem ta delal na vsaki platformi? Ker ne bi stvarca šla skozi kompajler, ki iz ASCI kode transformira v binarno, ampak bi že imeli narejeno binarno.
Bi šlo tako? Čeprav se mi zdi to nekako nemogoče...
Hmmm....

Loki ::

emm a si ti sploh ze kdaj odprl C++ (recimo Visual C++)?
pa ne mi govort, da ga mas doma, ampak da ga nimas instaliranega, ker nimas cajta....

Torej... če bi npr. en program napisu na "roke" recimo v beležnici v binarni kodi

to JE nemogoce.
I left my wallet in El Segundo

cahahopie ::

Vem, da je nemogoče.
Sam...nemogoče je mogoče (je rekla KOVINOTEHNA preden je bila "požrena").
Prosim pozorno preberi moje besede, saj sem 2x napisal, da je nemogoče.

Nemogoče je ker ne nemoreš vedet zaporedje enic in ničel za nek določen ukaz... ker bi blo to bedasto in kakor sva ti in jaz rekla, da je nemogoče.
Bilo bi pa mogoče, če čebula ne bi imela če, bi zato bila bula in ne čebula.:D

Tjulenj ::

sploh ne, sej lahko pises v strojnem jeziku, ampak ta je spet lasten samo dolocenim platformam, tako da tvoje "univerzalno pisanje" odpade

Senitel ::

Java dela na vseh platformah, za katere obstaja Java Virtual Machine (Oziroma Java Runtime Environment). Ta zadeva med drugim "on the fly" pretvarja ukaze iz Jave v ukaze platforme na kateri teče (interpreter).
C/C++, Pascal,... pa na drugi strani naredijo direktno izvršljivo kodo za platformo za katero so pisani. Vedet pa je treba, da so razlike že med OS-i (Windows - Linux) dovolj velike, da je nemogoče uporabiti isto executable kodo na obeh sistemih. Med procesorji pa so razlike še večje (byte order: low byte, high byte na x86 vs. high byte, low byte na PowerPC recimo...).

Roberto: Rad bi vidu ta virus...

cahahopie ::

Ja... se malce opravičujem. Ravno sem prebral članek o Assemblerju na www.programiranje.com
Aha... torej pisanje v strojnem jeziku. Hušššš....
Mene zanima kako so napisal Unix, če je bil pred njim poznan le strojni jezik? V assemblerju? Piše, da je bil to jezik, ki se je pojavil za strojnim. Oziroma... kam so prvo pisali strojni jezik? Strojni jezik so, kolikor sem prebral določena zaporedja številk, ki so se jih morali programerji "naučit na pamet". Torej... so to pisali zaporedja ničel in enic? In kam so jih pisali, če še ni bilo nobenga OS-a? Iz nič ne nastane nekaj... no ja rekli so, da je Bog iz nič naredil Zemljo... hmm...baje.:)

matic ::

yao yao yao bi clovek reku.. ti pa si padu z lune.. n ne.. sej je ql.. vsak nekje zacne, ampak ti si mal .. hmm .. velik prevec zabluzil! Upam da nisi s kake rac. sole .. pol nevem kaj tam delas!? Ajd .. ampak .. vsak nekje mora zacet! No ti bom skusal razlozit osnovne zadeve! Verjetno bo se marsikomu koristl! :D

Kokr (upam da ze) ves vsak racnalo pozna samo 1 in 0 se pravi stanje da in ne oz ima napetost (recmo rajs signal) ali pa ga nima. To vsako racunalo, ubistvu od stikala za luc v dnevni sobi, kalkulatorja, commodrija do 7Ghz pentimua XXL. In te signale sprejema procesor.. zato se mu rece procesor ker procesira te signale. In ti procesorji (ki so prav tako v kalkulatorju, mobitelu,itd) sprejemajo, oddajajo, kontolirajo te signale preko vodil. Vodila so pac nek dovod do procesorja, tukaj se potem govori o sirini vodila, kot npr. 8 bitno vodilo, 16 bitno itd (obicajno so ta vodila mnogokratniki 8). In ze smo pri bitih. Bit je ravno ta signal//informacija.. 1 ali 0. Ta informacija zasede 1 bit - 1 pomnilniska celica. Se pravi 1 celica pomni 1 odgovor "da" ali "ne". In ce je vodilo siroko 8 bitov - kar pomeni 8 bitno vodilo - pomeni da prenasa 8 odgovorov. Tako komunicira procesor z ostalimi napravami: Memorijo, graficna kartica, "diskovno vodilo" itd. In kaj potem dela procesor kaj vsebuje sploh???? Za dolocene kombiacije sprejetih bitov na vhodnem delu poslje doloceno kombinacijo naprej. Vsaka kombinacija pomeni prakticno nek ukaz. Se pravi nobena druga umetnost kot to da je ze znano neko logicno vezje ki na neko tocno dolecno kombinacijo vrne nek tocno dolecn odgovor. Se pravi ce dobi na vhod npr. ukaz 10010111 potem vrne na izhod 0101011 (cista moja izmisljotina). In kaj to komu pomeni? Tebi bore malo.. racunalniku pa marsikaj, ampak v 1 sekundi une sprocesira teh 1 in 0 za tvojo glavo se pa jos pa se mal velik! In to pomen ze marsikej vec! :) Ce je frekvenca procesorja 1GHz in je formula za T ((perioda v kateri predela 1 tak ukaz) T=1/f pomeni da predela 1 ukaz v 1*10na(-6)s oz. bolje receno v 1s predela 1000000 ukazov. (To velja v osnovni teoriji racunalniske arhitekture. Pri novesjih procesorjih je to dosti bolj razvito itd, s tem se se ne ubadaj se!) Vodila pa so dandanes obicanjno precej vecja od 8 bitov! (8 bitov = 1byte <- to je danes ze skoraj zakon, ni pa vedno tako!) In ce bi pisali res samo z 1 in 0 nebi noben bog razbral nicesar danes vec, zato se za krajsi zapis izbere hexdecimalen zapis kar je:
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
...
9 = 1001
...
F = 1111
in potem zgelda zapis 1111-1001-0011-0001 enak v hexa F931 in na koncu ponavadi damo H da se ve da je to hexa se pravi f931H. In ce potem ti trenutno dumpas(izpises//prebers) pomilnik dobis ven izpis pac nekako v hexa zapisu da kaj zaberes f6c10-3f79a-06b2-83f2c-3350 kar bi bilo v binarnem zapisu glomaznoooo veliko! Pa je to en zelooo kratek del pomnilnika. Ce je potem en pomnilniski naslov velik 1 Byte se pravi 8 bitov je to 8 enic oz 2 hexa stevili. In to so zapisani ukazi v pomnilniku oz. na tvojem disku ali cd romu. En ukaz pa sestavlja potem vec pomnilniskih celic. Pac pri racunalnikih kjer se je dobro ucit programiranja v strojnem jezki recimo kak Zilog Z-80 (spectrum) ali Motorola so npr. ukazi iz 2 delov. Ukaz in operand (operand = stvar s cimer ukaz dela (po kmecko povedano)) . In tako npr. nek ukaz v strojnem jeziku zglda "A6 00" kar pri motoroli pomeni "LDAA 0,X" kar pomeni tebi domace povedano shrani v register A (register = pomn. celica v samem procesorju) kar je na naslovu na katerega kaze register IX! ;) Zdej si pa razlozi po svoje! ;) In ce damo se pred tem ukaz "CE 00 00" kar pomeni v assemblerju "LDX #$0000" in tebi povedano: v register IX nalozi vrednost (ki bo potem pac pomenila naslov) 0000.

Vse to kar sem tu spisal je cisto tako na hitro sedaj spisano in dandanes marsikaj ni vec tako ampak ze dosti bolj napredno in sem pa kje sem se lahko v tem hitrem pisanju tudi jaz kaj zmotil.. morda tudi kao velko napako ven bleknil - ampak naceloma sem osnove racunalniske arhitekture in osnovno programiranje v assemblerju dobro nastudiral .. tako da sam dobro zastopim kako stvar tece. Ce bi rad vedel se te morda lahko usmerim kje in kako .. kar nekaj tega je tudi v slovesncini.. mail me!

No in kaj lahko poberes s tega ti? (ce se si zgoraj opustil branje preberi vsaj to) Nevem koliko zastopis racunalnik, ampak sigurno ne dosti.. nevem ce ti to ravno kaj pomaga in ce ves kaj so sploh pomnilnikski naslovi in tako naprej. Verjetno ne dosti.. ampak mogoce se ti vsaj malenkost vec sanaja kot prej. In kot vidis se v sam racunalnik pise na cisto osnovni strukturi in dela tam, samo se zdalec ne v notepadu in ASCII nima kaj dosti tukaj.. kaj je ASCII o tem drugic. Ampak dandanes je to ze za cloveka precej poenostavljeno in pisanje v strojnem jeziku je se veno tako kot na zacetku racunalnistva samo da ze dosti bolj razumljivo. Uporablajo se assemblerji ki nam prakticno samo pomenijo da namesto nekih oznak 101010101 (kar so vcasih delali z zluknjanimi karticami) in potem za krajsi zapis s hexa stevili 12f3ab7c pisemo sedaj z nam vec pomenskimi besdami (add, sub, lda, ldb, bne,..), ki so prakticno samo zamenjave za neke oznake. Pac nek sporazum med nami in racunalnikom. In zakaj potem ne dela nek os ali karkoli na vecih platformah? Ravno zaradi te osnovne strukture racunalnika in procesorjev, ki so malenskostno a ogromno drugacne! Saj je marsikaj narejeno za vec racunalnikov npr adobe photoshop dela prav tako na Macu in PCju in se kje drugje in program je podoben a na najnizjem nivoju je skoraj na vsakem procesorju oz. vsakem racunalnku malo drugacen. Ze ce nekaj memorije dodas se program spremni - temu prilagodi.

Za konec se kako zgleda program v assemblerju za motorolo, ki je tudi nekako komentiran da bo komu jasen:

tabela EQU $0000 naslov tabele
min EQU $0008 n. najmanjsi element tabele
ORG $0000 izhodisce vrednosti
FCB $70,$3D,$FF,$80,$5A,$33,$11,$60
ORG $FFFE reset vektor
FDB START ukaz za zacetek
ORG $C000 izhodisce programa
START LDX #$0000 indeksni reg. na $0000
LDAB #7 (direktno) #7 -> b
LDAA 0,X kar je na naslovu IX -> a
zanka CMPA 1,X (IX+1) -> a
BLS naprej skoci ce sta flaga c+z=1 (!?)
LDAA 1,X (IX+1) -> a
naprej INX IX+1 (IX se poveca ta 1)
DECB (b-1)->b (b se zmanjsa za 1)
BNE zanka skoci na "zanko" ce je flag z=0
STAA $0008 shrani rezultat na naslov 0008
END konec

in po prevajanju tega procesorju on izpise nekako takle izpis ven kjer se vidi kaj je kak ukaz, na katerem pomn. naslovu je shranjen itd:
TAS - Motorola 6800 family cross assembler V1.3 Tue Mar 13 13:25:47 2001

Source file: C:ORA2DELOMATICVAJA2-3.ASM

0000 tabela EQU $0000 naslov tabele
0008 min EQU $0008 n. najmanjsi element tabele
0000 ORG $0000 izhodisce vrednosti
0000 70 3D FF 80 5A 33 FCB $70,$3D,$FF,$80,$5A,$33,$11,$60
11 60
FFFE ORG $FFFE reset vektor
FFFE C0 00 FDB START ukaz za zacetek
C000 ORG $C000 izhodisce programa
C000 CE 00 00 START LDX #$0000 indeksni reg. na $0000
C003 C6 07 LDAB #7 (direktno) #7 -> b
C005 A6 00 LDAA 0,X kar je na naslovu IX -> a
C007 A1 01 zanka CMPA 1,X (IX+1) -> a
C009 2F 02 BLE naprej skoci ce sta flaga c+z=1 (!?)
C00B A6 01 LDAA 1,X (IX+1) -> a
C00D 08 naprej INX IX+1 (IX se poveca ta 1)
C00E 5A DECB (b-1)->b (b se zmanjsa za 1)
C00F 26 F6 BNE zanka skoci na "zanko" ce je flag z=0
C011 97 08 STAA $0008 shrani rezultat na naslov 0008
END konec


Errors: 0

Symbols:
TABELA 0000 | MIN 0008 | ZANKA C007
NAPREJ C00D | START C000 |


Ce koga se kaj vec zanima ravno o motoroli lahko kaj najde zase, navodila za assembler, emulator in vse potrebno na (upam da se dela) naslovu:
http://mrl-pc.fri.uni-lj.si/ora/ora-new...

Tuki pa je tut en link ki tece ravno o assemblerju na tem forumu:
assembler

to je vse! ;) Vem da je tukajle polno napak, ampak tut slucajno se mi neda it vsega se 1x brat in popravlat napak! ;p ce pa kdo kak comment in bi rad vse skur*** .. veselo na delo!!

rc-car ::

matic: samo malo prevec zapleteno si vse pokazal ;)

assembler sploh ni tak bavbav kot zgleda iz tiste tvoje kode

cahahopie: ce hoces enostavne primere poglej sem kjer so moja poročila za rač. za lansko leto in so gor tudi (ZELO) enostavni primeri, samo pohiti, ker mislim stran v kratkem brisat iz serverja ;)
Nothings gonna stop me now, I'm breaking the rules, I'm gonna do it if its not allowed

cahahopie ::

Jezus!
Kako smo si po znanju o računalnikih različni.
Mam enga frenda, ki v življenju še ni škatle ofnu in mi je dans vprašu: " Kaj ? Grafična se lahko menja? Jaz pa sem mislu, da je treba celo plato menjat." Haloo?? Potem na eni strani mam enga znanca, ki labra o SDRAM-ih in o nekem navijanju procesorja, na drugi strani pa si ne zna bližnjice do raziskovalca na namizju nardit.
Potem sem pa tu nekje, ki delam vse bolj ritensko... učim se C++ (nekaj ga že kar znam!) ne pa, da bi kaj vedel o sami podrobni zgradbi sistema.
Tako kot moja stara mama:
"Danes pa je zvonilo, pa tak škoda ga je blo. Pa tak mal jih je blo."
JAZ: "Kje? Koga?"
stara mama: "Na grobu. Jankov Tinče je umrl"
JAZ: "Aja! A sam to?":D

matic ::

rc-car: jah res nisem ravno najenostvanjesega primera dal... za srednjo solo je in nekoga ki sem s tem prvic sreca in da zve sploh za obstoj tega, je verjetno res bav bav.. ko pa 1x spoznas pa je tole kto if stavek v Cju. No nise mi ravno dalo se psoebej primera pisat za tole.. tako da sem samo copy in pastal ;) ampak za osnovno predstavo pa upam da bo komu pomagalo!

rc-car ::

matic: sej vem, sam sem napisal ker pol folk misli da je to krneki in ful za*eban, ko pa je v resnici cist enostavno ;)
Nothings gonna stop me now, I'm breaking the rules, I'm gonna do it if its not allowed


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Prvi programski jezik (kako je deloval)?

Oddelek: Programiranje
165426 (4658) noraguta
»

programiranje v zbirniku z ukazi ...

Oddelek: Programiranje
204029 (3289) lebdim
»

Digitalna tehnika

Oddelek: Šola
81123 (968) Tutankhamun
»

Najhitrejši programski jezik? (strani: 1 2 )

Oddelek: Programiranje
757554 (5374) Senitel
»

Programiranje (strani: 1 2 )

Oddelek: Programiranje
846379 (4977) Thomas

Več podobnih tem