Kezdőoldal » Számítástechnika » Programozás » Mért így van Assembly-ben?

Mért így van Assembly-ben?

Figyelt kérdés

Már az elején nem értem.


x = y + 1


Mozgassuk y értékét az 1. regiszterbe.

Mozgassuk az 1-es számot a 2. regiszterbe.

Az 1. regisztert adjuk a 2. regiszterhez.

A 2. regisztert mozgassuk az x változóba.


Így gyorsabb szerintem:

Mozgassuk az 1-es számot a 2. regiszterbe.

A 2. regisztert mozgassuk az x változóba.


2022. máj. 27. 19:50
1 2 3 4
 21/34 anonim ***** válasza:
0%

15:22 (14), 21:26 (19):


"Bocs de ez valami elméletben létező proci? Mert én ilyennel még nem találkoztam. De az elvet sem értem. Ez valami totális zűrzavar. Ha a vermet eléri bármelyik regiszter miért nem éri el a memóriát? Semmi értelme ennek igy."


Nem, ez a gyakorlatban létező, tizenhat utasításos, RISC, TTL elemekből épített processzor. A rendeltetése az, hogy laikusok is könnyebben megértsék egy processzor működését, megismerhessék annak belső szerkezetét.

Zűrzavar meg csak a te fejedben van, ami ismerethiányból fakad. Olvasd és eloszlik a köd:


"Bármelyik" regiszter azért nem éri el a memóriát, de a stacket igen, mert a stack belső, a processzor elemi része. Tehát, nem az operatív tárból van lenyesve, mint azt te feltételezted, hibásan.

Egyébként, a panaszod amúgy sem igazán jogos, mert pl. a 6502-ben nem véletlenül van az első 256 byte-ra huzalozva a stack. Építkezés szempontjából nagyon nem mindegy, hogy egy regiszter csak egy byte-nyi címteret érhet el, vagy mindet, ami csak rendelkezésre áll.

Nálad tisztán látszik, hogy csak fogyasztó vagy. Értem ez alatt, hogy processzort használtál, programozál ugyan, de nem terveztél még soha, a tervezés alapelveivel sem vagy teljesen tisztában. Előszeretettel definiálsz kvázi meghághatatlan tervezési alapelvnek olyan butaságokat, amiket te ötlesz ki, pusztán azért, mert nincs elég ismereted, vagy nem gondolsz bele a dologba mélyebben. Eleve, hogy minősíthetsz valamit, amit teljes egészében nem is ismersz?


Ha már történelmi processzorokkal példálóztál, akkor hadd tegyem meg én is. A 6502-es processzor mindössze 2500 tranzisztor felhasználásával hozta azt a teljesítményt 1 Mhz-en, amit a z80 processzornak sikerült elérnie 2.5 Mhz-en, a maga 8500 tranzisztoros arhitektúrájával, sokkal költségesebb gyártással, magasabb kisker áron. Az ARM, a jelenkor legsikeresebb processzor családja is a 6502 tervezési elveit követi, létezése óta.

2022. máj. 29. 01:40
Hasznos számodra ez a válasz?
 22/34 A kérdező kommentje:

Sima Intel processzorra gondoltam.


És amúgy is, csak gyakorlásként.

2022. máj. 29. 02:50
 23/34 A kérdező kommentje:
Csak érdekességből próbáltam az assembly-t, nagyon nehéz programnyelv.
2022. máj. 29. 02:52
 24/34 anonim ***** válasza:
0%

"Sima Intel processzorra gondoltam."


Ez a kérdésedből nem derült ki.


"Csak érdekességből próbáltam az assembly-t, nagyon nehéz programnyelv."


Igen, tényleg nehéz. Körülményes, nagy odafigyelést igénylő munka.

Amíg nincs komolyabb jártasságod legalább egy magasszintű nyelvben, addig nem is érdemes asm-mel kezdeni. Plusz, az asm azért elvár alapszintű hardveres ismereteket is, másképpen nem fogod tudni használni. Jól, megfelelően használni.


Az viszont az asm javára írható, hogy ha rendesen megtanulsz assemblyben fejleszteni, akkor bármilyen porcesszorra tudsz majd programot írni. Ráadásul gyorsat, hatékonyat. Attól függetlenül, hogy egyik processzor assembly-je nagyon különbözhet egy másikétól. Egy szint felett ez a különbözőség már nem akadály.

Egy szint felett már semmi sem akadály, csak az idő.

2022. máj. 29. 03:07
Hasznos számodra ez a válasz?
 25/34 anonim ***** válasza:
71%
"nagyon nehéz programnyelv. " Nem nehéz csak picit más gondolkodást igényel. Amit itt az előző írt főleg a stack gépével azt felejtsd el. Sehol nem használják.
2022. máj. 29. 08:00
Hasznos számodra ez a válasz?
 26/34 anonim ***** válasza:
71%
Egy pipás Delphi papával nem kell foglalkozni, el sem kell olvasni a kommentjeit, nyugodtan tegyetek úgy, mintha nem is létezne.
2022. máj. 29. 08:05
Hasznos számodra ez a válasz?
 27/34 anonim ***** válasza:
71%

" Értem ez alatt, hogy processzort használtál, programozál ugyan, de nem terveztél még soha, a tervezés alapelveivel sem vagy teljesen tisztában." Eleve nem is tudod, hogy ki vagyok. Ezzel nem kívánok vitába szállni. De attól, hogy p*csméregetésként álítólag terveztél már processzort nem kéne orbitális tévedésekkel és soha senki által nem használt "elvekkel" félre vezetni a kérdezőt. Ha meg ennyire nagyra vagy a nem létező tudásoddal akkor nagyjából tisztában lennél azzal amiről beszélsz. És nem kevernéd az akkumulátoros gép felépítést egy stack gép (pl. fordított lengyel) felépítését. És honnan kellett volna tudni, hogy nálad a stack hardverben van (mint pl. egy stack gép esetén szokott, mert az nem derült ki sehonnan, ezzel az infóval csk azután jöttél elő, hogy rávezettünk, hogy totálisan szakmaiatlan és fogalmatlan amit leírtál).


És ha te egy ilyen soha senki által nem használt felépítésen akarod bárkinek is bemutatni a processzor működését és az assembly nyelvet akkor meg jobban tennéd ha ezt most befejeznéd, mert teljesen tévútra viszed az embereket. Ezt közveszélyes kókányolásnak kéne tekinteni. És tényleg gondold végig, hogy hány embernek tetted tönkre eddig ezzel a szakmai karrierjét még az elején. ÉS most fejezd ezt be. De ezt nagyon komolyan kérem. Mert nem csoda, hogy amikor hozzánk kerülnek innen-onnan összeszedett infókkal gyomlálhatjuk ki az agyukból a berögzött totális téveszméket. Sokkal nehezebb mint az elején helyesen megtanítani. Sajnos itt nem lehet úgy töröltetni a válaszaiadat, hogy a moderátornak elmagyarázzuk, hogy miért totálisan életveszélyes az amit leírtál, és hány embernek veszed el a kedvét az egésztől (ld. pl. a kérdezőét is). Ez felér egy szakmai öngyilkosságra felbújtással amit Te teszel és művelsz itt.

2022. máj. 29. 08:16
Hasznos számodra ez a válasz?
 28/34 anonim ***** válasza:
71%

"Akkor az Assembly programban csak egy regiszterben lehet érték, a többi regiszterben ilyenkor nincs? Változóknál ugye nem így van?"

Dehogy! Ha csak egy regiszterben lehetne érték, akkor semmilyen kétoperandusú műveletet nem tudnál végezni. (Meg akkor minek lenne a többi regiszter)? Az összeadós példában sem csak egy regiszterben van érték. Annyi kikötés van, hogy ÁLTALÁBAN, a legtöbb proceszsor esetében meghatározott, hogy melyik regiszterekben kell a műveletben részt vevő értékeknek szerepelni. Illetőleg rendszerint a "fő" regiszterben adja vissza a művelet eredményét.

Hagyományos értelemben vett változók pedig nincsenek Assemblyben. Persze, sok fordító biztosít hasonlókat, de alapvetően az Assembly regiszterekkel, és memóriacímekkel dolgozik. Épp ezért alacsony szintű programozási nyelv.


"Mert így olyan, mintha minden egyes új érték hozzáadásánál, újból át kéne pakolni egyenként végig az értéket."

Ezt nem teljesen értem, hogy mire gondolsz. Arra, hogy ha egy memóriabeli értékhez hozzá akarsz adni valamit, akkor azt be kell pakolni a regiszterekbe, összeadás után meg vissza a memóriába? Igen, ez így van. És igazából MINDEN programozási nyelvnél így működik a háttérben, csak ezt maga a nyelv elrejti előlünk.


"Sima összeadás is nagyon nehéz"

Pedig ez még a nagyon egyszerű dolgok közé tartozik. :D A ciklusszervezés már jóval összetettebb, főleg, hogy klasszikus értelemben véve nincsenek is ciklusutasítások a nyelvben. Neked kell megoldani feltételes ugró utasításokkal. A szövegkezelésről meg ne is beszéljünk.


"inkább másik programnyelvet választok."

Hát.. kezdő nyelvként nehezen tudnám ajánlani az Assemblyt. Azoknak tudom ajánlani, akik már a programozásban szereztek némi jártasságot, és érdekli őket a gép elemi szintű működése.

2022. máj. 29. 12:28
Hasznos számodra ez a válasz?
 29/34 anonim ***** válasza:
63%

""Mert így olyan, mintha minden egyes új érték hozzáadásánál, újból át kéne pakolni egyenként végig az értéket."


Ezt nem teljesen értem, hogy mire gondolsz. "


Az oka az idióta válaszadó idiótásaga. Egy olyan nem létező procira mutatott példát amelyik keveri a verem gépeket (stack machine pl. fordított lengyel) és a korszerű procikat. És ez a kezdő kérdezőt összezavarta nem is kicsit.

2022. máj. 29. 16:26
Hasznos számodra ez a válasz?
 30/34 anonim ***** válasza:
0%

A survey of Computers with Hardware Stack Support


aadc

aamp

ACTION PROCESSOR

AEROSPACE COMPUTER

ALCOR

AN ALGOL MACHINE

AM29000

APL LANGUAGE

BUFFALO STACK MACHINE

BURROUGHS MACHINES

CALTECH CHIP

CRISP

DRAGON

EM-1

EULER

FORTH ENGINE

FORTRAN MACHINE

FRISC 3

G-MACHINE

GLOSS

HITAC-10

HP300 & HP3000

HUT

ICL2900

INTEL 80x86

INTERNAL MACHINE

IPL-VI

ITS (Pascal)

KDF-9

KOBE UNIVERSITY MACHINE

LAX2

LILITH

LISP MACHINES

MCODE

MESA

MF1600

Micro-3L

MICRODATA 32/S

MISC M17

MOTOROLA 680x0

MU5

NC4016

NORMA

OPA (Pascal)

PASCAL MACHINE

PDP-11

POMP PASCAL

PSP

PYRAMID 90X

QFORTH

REDUCTION LANGUAGE MACHINE

REKURSIV

RISC I

ROCKWELL MICROCONTROLLERS

RTX 2000

RTX 32P

RUFOR

SF1

SOAR

SOCRATES

SOVIET MACHINE

SYMBOL

TRANSPUTER

TM

TREE MACHINE

VAUGHAN & SMITH'S MACHINE

WD9000 P-ENGINE

WISC CPU/16

WISC CPU/32

2022. máj. 30. 00:06
Hasznos számodra ez a válasz?
1 2 3 4

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!