lihur
Noor toru

Registreerunud: 22.7.2009
Kasutaja on eemal
|
|
|
Ülesanne on:
Stack pointer viitab mälupesale 1 880. Programm lisab pinusse alamprogrammi jaoks 4 parameetrit, kutsub välja alamprogrammi.
Alamprogramm salvestab pinus Frame pointeri sisu, 3 lokaalmuutujat ja 4 registri sisu.
Milline on Stack pointeri väärtus peale nimetet operatsioonide sooritamist, kui sõna pikkuseks on 4 baiti ja tegemist on bait-adresseeritava mäluga?
Vastus peaks tulema: 1 828 .
Tahaks teada mis tehete käiguga ja valemitega saab selle vastuse kätte.
Mul tuleb sarnane ülesanne varsti kontrolltöösse ja tahaks teada kuidas seda teha tuleb.
|
|
0 |
|
Duzubi
Toru
 
Registreerunud: 23.7.2009
Kasutaja on eemal
|
|
|
Kui jutt käib TÜ Arvuti arhitektuuri kursusest, siis minu mäletamist mööda olid seal videoloengutes ilusti kõik lahenduskäigud lahti seletatud ja asjadest aru saamine oli süvenemise taga kinni. Kui siiski aru ei saa, siis oleks arvatavasti mõistlikum Plangile kiri saata ja küsida.
|
|
0 |
|
lihur
Noor toru

Registreerunud: 22.7.2009
Kasutaja on eemal
|
|
|
Juttu on küll TÜ Arvutiarhitektuuri kursusest, kuid ma ei saa sellest videoloengust midagi aru. Ja karta on, et õppejõud vastaks suht sarnaselt, et vaataksin videoloengut uuesti või annaks minu jaoks suht krüpteeritud vastuse. Sooviksin pisut otsesemat vastust kuidas seda teha, nt. mingi valem vms. Kasvõi kui valem kehtib ainult sedasorti ülesannete puhul.
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
Millest Sa aru ei saa? Stack/pinu tööpõhimõttest? Või saad Sa teistsuguse vastuse? Alusta sellest, et hakka lahendama ja ütle meile, kuskohas sa täpselt toppama jäid (või mis oli esimene väike küsimus, millele Sa vastust ei tea).
PS. kui keegi lisab valmis lahenduse, siis läheb teema kasti
|
|
0 |
|
lihur
Noor toru

Registreerunud: 22.7.2009
Kasutaja on eemal
|
|
Ma ei saa aru sellest, kuidas need parameetrid (4), lokaalmuutujad (3), registri sisud (4) (ja baitide arv (4)), mõjutab Stack pointeri väärtust (1880). Ehk üldiselt ei saa sellest asjast mitte midagi aru, ainus asi, millest ma arvan, et saan kasvõi vähesel määral oru on baitide arv, kuid pole ka selles kindel).
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
Stack (pinu maakeeli, aga mulle ei meeldi) on selline huvitav struktuur, kuhu andmeid topitakse (push) ja ja kust neid siis vastupidises järjekorras välja korjatakse (pop). Umbes nagu suur kitsas kott, kuhu asju laod ja pärast tagurpidi välja võtad. Ainult et teistpidi - põhi on üleval.
No ja stack pointer (pinuviit?) on tegelikult aadress, mis näitab sinna viimati topitud asja asukohta. Paned ühe asja (parameetri, funktsiooni tagasituleku aadressi - misiganes) sinna sisse (push), kahaneb stack pointer samapalju, kui suur see asi oli. Ehk kui neljabaidine kolakas stacki pushida, on stack pointer nelja võrra väiksem (meenuta - adresseerimine oli baidi täpsusega).
Nüüd on Sinu etteaste
[Muudetud: 20.3.2010 DonQ]
|
|
0 |
|
lihur
Noor toru

Registreerunud: 22.7.2009
Kasutaja on eemal
|
|
|
Kuid mida ma siiski nende parameetrite, lokaalmuutujate ja registri sisudega teen? Ainu asi mida ma sellest aru nüüd sain (ja enne arvasin sama) on see, et stack muutub x baidi kaupa. Ülejäänud osad on minu jaoks siiski teadmata.
|
|
0 |
|
Borderliner
Üldmoderaator
     
Registreerunud: 15.7.2009
Asukoht: rotting in HLL
Kasutaja on eemal
Tuju: EViL
|
|
Paned paberile ülesandes antud tegevuste järjekorra, kasvõi DonQ piltlikut näidet (asjade kottipanek ning sealt väljavõtmine) kasutades.
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
|
Lisavihje - iga parameeter pannaks funktsiooni väljakutsumiseks stacki (push), samuti kõik muud asjad, mis stacki pannakse või seal hoitakse (nagu näiteks lokaalsed muutujad), võtavad ruumi.
Lisamure - see teema on üks tänapäeva protsessorite ja arvutiarhitektuuri üldiseid aluskomponente. Kuidas on võimalik, et Sa seda teemat õppides pole sellest üldse midagi kuulnud?
|
|
0 |
|
lihur
Noor toru

Registreerunud: 22.7.2009
Kasutaja on eemal
|
|
|
Siiamaani ei mõista, kuidas mõjutavad Stack pointerit registri sisud, kas samamoodi nagu parameetrid ja lokaalmuutujad?
Kas Stack pointeri väärtusest siis lahutatakse 4(baidid)*(4(parameetrid)+3(lokaalmuutujad)) ja veel mingid tehted?
Kas alamprogrammi välja kutsumine või Frame pointeri sisu salvestamine muudab Stack pointeri väärtust?
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
Su enda jutust: "Alamprogramm salvestab pinus Frame pointeri sisu, 3 lokaalmuutujat ja 4 registri sisu." See tähendab lihtsalt seda, et ta paneb (pushib) need sinna - või vähemalt reserveerib nende jaoks ruumi, mis toob loogiliselt võttes kaasa täpselt samasuguse stack pointeri nihutamise.
Mis almprogrammi väljakutsumisse puutub, siis otsi maailmast, kuidas protsessor teada saab, millisele aadressile alamprogrammist tagasi tulla  Vihje - tagasipöördumisaadress tuleb kuskile panna...
|
|
0 |
|
Duzubi
Toru
 
Registreerunud: 23.7.2009
Kasutaja on eemal
|
|
|
Lisan sulle veel seda, et olenevalt sellest, mis erialal oled, on praegu asjale pihta saamine võrdlemisi oluline. Ise hakkan parasjagu infotehnoloogia eriala lõpetama ja seda võin sulle küll kindlasti öelda, et kui sa praegu registritele, stackile ja masinkoodile pihta ei saa, siis ega sul hiljem kergemaks ei lähe (kui sa muidugi just vabakuulajana seda ainet ei võta).
|
|
0 |
|
Mr.Black
Veterantoru
   
Registreerunud: 23.7.2009
Kasutaja on eemal
Tuju: Inglorious Bastard
|
|
Mina, kes ei ole sadsorti asjandust ennem näinudki sain sellest aru. Ja ma ei ole just kõige teravam pliiats karbis, nii et ära jama, mõtle nüüd natuke, lahendus sulle kandiku peal ette toodud.
Mess with the best and u die like the rest!
|
|
0 |
|
lihur
Noor toru

Registreerunud: 22.7.2009
Kasutaja on eemal
|
|
|
Ma peaks mainima, et minu jaoks polnud nendest vihjetest suurt abi, kuid lõin omatarvis mingi magic valemi, mis võib küll vale olla, kuid andis töös õige vastuse. Mainin ka seda, et üldiselt vastatakse kas küsisõnaga küsimustele jah või ei vastusega, mitte pika ja küsimusele otsest vastust mitte andva tekstiga. Samuti huvitab mind, miks vastata otsesele küsimusele vihjetega? Ja mainiks ka ära, et kuigi ma õpin informaatikat, on see aine võetud vabaainena, seda pole mul õppekavas. Tehke teemaga mis tahate, ma sain töö suhteliselt edukalt läbi.
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
Alternatiiv oleks teema kasti lüüa; tavaliselt eelistatakse siiski esimest varianti.
|
|
0 |
|
Borderliner
Üldmoderaator
     
Registreerunud: 15.7.2009
Asukoht: rotting in HLL
Kasutaja on eemal
Tuju: EViL
|
|
Sa ajad meid ilmselt oma õpetajaga segamini, tema on see kes saab *palka* selle eest et sulle asi selgeks teha. Kui sa ei oska siis kõik millega TF sind aitab on õigele teele suunamine (mida ka korduvalt tehti), mingit koduülesannete ärategemist (või koduõpetaja mängimist) TFis pole ei praegu, polnud minevikus ega saa ka kunagi olema.
"Tehke minu eest koduülesanne ära" teemade (mida käesolev on) puhul on täpselt 2 varianti, need mille DonQ ära mainis.
[Muudetud: 20.3.2010 Borderliner]
|
|
0 |
|
lihur
Noor toru

Registreerunud: 22.7.2009
Kasutaja on eemal
|
|
|
Ma ei ajanud torufoorumit mitte mingi õpetajaga segamini. Samuti ei väitnud ma kordagi, et see on koduülesanne, vaid kirjutasin, et mul oli tulemas kontrolltöösse sarnane ülesanne (seega oleks olnud sobilikum seda ülesannet vaadata rohkem kui teemakohast probleemi).
Alternatiive vihjetele vastamisega oleks olnud rohkem kui üks. Minule oleks sobinud ka vastustega vastamine, see oleks olnud isegi eelistatud.
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
|
Kaua Sa virised nüüd? OK, paneme lukku, saad midagi muud ka teha.
|
|
0 |
|