( bucko | 2020. 11. 24., k – 09:01 )

Köszönöm a hasznos és merőben új információkat!

Habár az egyes architektúrák assembly nyelvei hasonlóak

Nem. Szó sincs nyelvi elemekről. Az egy utasítás (álalában) megfelel egy gépi kódnak. Más architektúra == más hardver, és mást is csinál(hat).

Pl. a "load" utasítás tölthet egy regisztert. Nyilvánvalóan az 1, 3 vagy 32 regiszteres processzorok között nem lehet "hordozni" a kódot. Nem azért mert a kód különbözik, hanem a hardver különbözik.

Tehát itt szó sincs "hordozásról", hanem a hiányzó regisztereket (hardvert) "kis szoftverrel" emulálni kell - már, ha van értelme.

Néha az assembly kód kiválóan hordozható, ha az utód processzornak van natív módja (8080->V20), vagy az utód hasonló architektúra (8080->8086). Ezzel szemben a 8X300 8 utasítását sehova se fogod hordozni - ezért gyártják ma is.

Ha úgy tetszik, ez egy szakmai szleng és egyben pongyolaság is.

Elég lett volna ezt a mondatot értelmezned, nem kellett volna ezt az általános maszlagot belinkelni.

Kicsit megint kénytelen leszek elmagyarázni a kostellációt. Ha egy assembler képes kezelni a címke, mnemonic, operandus, adat entitásokat, akkor az már komplett fordító. Amire az assembler pongyola megfogalmazást használom, az mindig macro assembler, amelynél már tényleg beszélhetük a direktívák és makró képességek miatt "nyelvi elemekről". De ezek nem az assemby kód, hanem a fordító képességei.

Pl. a gputils/gpasm nem rendelkezik a REPT/IRP/IRPC direktívákkal, ezért néha csak sorról-sorra tudom  beírni a kódot vagy adatot. Ennek semmi köze az adott processzor assembly utasításaihoz (és a gyártó fordítójához se), csak az assembler fordítóhoz.