Sada instrukcí Burroughs B6x00-7x00 - Burroughs B6x00-7x00 instruction set
![]() | Tento článek má několik problémů. Prosím pomozte zlepšit to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
The Sada instrukcí Burroughs B6x00-7x00 zahrnuje sadu platných operací pro Burroughs B6500,[1] B7500 a novější Burroughs velké systémy, včetně aktuálního (od roku 2006) Unisys Systémy Clearpath / MCP; nezahrnuje instrukce pro jiné velké systémy Burroughs včetně B5000, B5500, B5700 a B8500. Tyto jedinečné stroje mají osobitý design a sadu pokynů. Každý slovo dat je spojeno s typem a účinek operace na toto slovo může záviset na typu. Dále jsou stroje skládané[A] na základě toho, že neměli žádné registry adresovatelné uživatelem.
Jak byste očekávali od popisu běhu datové struktury používané v těchto systémech, mají také zajímavé instrukční sada. Programy jsou tvořeny 8bitové slabiky, což může být volání jména, volání hodnoty nebo vytvoření operátoru, který může mít délku od jedné do dvanácti slabik. Existuje méně než 200 operátory, které se vešly do 8bitových slabik. Mnoho z těchto operátorů je polymorfní v závislosti na druhu dat, na která se jedná, jak je dáno značkou. Pokud ignorujeme výkonné operátory skenování, přenosu a úpravy řetězců, je základní sada pouze asi 120 operátorů. Pokud odstraníme operátory vyhrazené pro operační systém, jako jsou MVST a HALT, je sada operátorů běžně používaných programy na úrovni uživatele menší než 100. Slabiny volání jmen a volání hodnot obsahují oslovit páry; slabiky operátoru buď nepoužívají žádné adresy, nebo používají řídicí slova a deskriptory v zásobníku.
Vzhledem k tomu, že neexistují žádné programovatelné registry, není potřeba většiny operací manipulace s registry vyžadovaných v jiných architekturách, ani varianty pro provádění operací mezi dvojicemi registry, protože všechny operace jsou aplikovány na horní část zásobník. Díky tomu jsou soubory kódu velmi kompaktní, protože operátoři mají nulovou adresu a do proudu kódu nemusí zahrnovat adresu registrů nebo paměťových míst.
Například sada instrukcí má pouze jednoho operátora PŘIDAT. Typické architektury vyžadují pro každý datový typ více operátorů, například add.i, add.f, add.d, add.l pro celočíselné, floatové, dvojité a dlouhé datové typy. Architektura rozlišuje pouze jednoduchá a dvojitá čísla přesnosti - celá čísla jsou jen reality s nulou exponent. Když jeden nebo oba z operandy má značku 2, provádí se přidání s dvojitou přesností, jinak značka 0 označuje jednoduchou přesnost. Samotná značka je tedy ekvivalentem rozšíření .i, .f, .d a .l operátoru. To také znamená, že kód a data nelze nikdy neshodovat.
Při zpracování dat na zásobníku jsou důležití dva operátoři - VALC a NAMC. Jedná se o dvoubitové operátory, 00 je VALC, volání hodnoty a 01 je NAMC, volání jména. Následující šest bitů slabiky, zřetězené s následující slabikou, poskytuje pár adres. VALC tedy pokrývá hodnoty slabik 0000 až 3FFF a NAMC 4000 až 7FFF.
VALC je další polymorfní operátor. Pokud narazí na datové slovo, načte se na začátek zásobník. Pokud narazí na IRW, bude následováno, případně v řetězci IRW, dokud nebude nalezeno datové slovo. Pokud je nalezen PCW, je zadána funkce pro výpočet hodnoty a VALC se nedokončí, dokud se funkce nevrátí.
NAMC jednoduše načte pár adres na horní část zásobníku jako IRW (se značkou automaticky nastavenou na 1).
Statické větve (BRUN, BRFL a BRTR) používaly dvě další slabiky offsetu. Aritmetické operace tedy obsadily jednu slabiku, operace adresování (NAMC a VALC) obsadily dvě, větve tři a dlouhé literály (LT48) pět. Výsledkem bylo, že kód byl mnohem hustší (měl lepší entropii) než běžná architektura RISC, ve které každá operace zabírá čtyři bajty. Lepší hustota kódu znamenala méně chyb v mezipaměti instrukcí, a tedy lepší výkon při spouštění rozsáhlého kódu.
V následujících vysvětleních operátorů si pamatujte, že A a B jsou dva horní registry zásobníku. Rozšíření s dvojitou přesností jsou poskytována registry X a Y; tedy horní dva operandy s dvojitou přesností jsou dány AX a BY. (Většinou AX a BY jsou implikovány pouze A a B.)
Aktuální LL | Lexikální úroveň bity | Index bity |
---|---|---|
0-1 | 13 | 12-0 |
2-3 | 13-12 | 11-0 |
4-7 | 13-11 | 10-0 |
8-15 | 13-10 | 9-0 |
16-31 | 13-9 | 8-0 |
Aritmetické operátory
- PŘIDAT
- Přidejte dva horní operandy zásobníku (B: = B + A nebo BY: = BY + AX, pokud je dvojitá přesnost)
- SUBT
- Odečíst (B - A)
- VÍCE
- Znásobte výsledek s jednoduchou nebo dvojitou přesností
- MULX
- Rozšířené násobení s vynuceným výsledkem dvojnásobné přesnosti
- DIVD
- Rozdělte se skutečným výsledkem
- IDIV
- Rozdělte s celočíselným výsledkem
- RDIV
- Zbytek po rozdělení rozdělte
- NTIA
- Integerize zkrácena
- NTGR
- Zaokrouhlit na celé čísla
- NTGD
- Integerize zaokrouhleno s výsledkem dvojnásobné přesnosti
- CHSN
- Změnit znaménko
- PŘIPOJIT SE
- Připojte se ke dvěma singlům a vytvořte double
- SPLT
- Rozdělte dvojitý a vytvořte dva singly
- ICVD
- Převést destruktivní vstup - převést číslo BCD na binární (pro COBOL)
- ICVU
- Aktualizace převodu vstupu - převést číslo BCD na binární (pro COBOL)
- SNGL
- Zaokrouhleno na jednu přesnost
- SNGT
- Nastaveno na jednu přesnost zkráceno
- XTND
- Nastaveno na dvojnásobnou přesnost
- PACD
- Balení destruktivní
- PACU
- Aktualizace balíčku
- USND
- Rozbalit podepsané destruktivní
- USNU
- Rozbalte podepsanou aktualizaci
- UABD
- Rozbalte absolutně destruktivní
- UABU
- Rozbalení, absolutní aktualizace
- SXSN
- Nastavit vnější znak
- ROFF
- Přečíst a vymazat klopný flop
- RTFF
- Přečtěte si flip flop true / false
Porovnávací operátoři
Logické operátory
- PŘISTÁT
- Logické bitové a všech bitů v operandech
- LOR
- Logické bitové nebo všechny bity v operandech
- NENÍ
- Logický bitový doplněk všech bitů v operandu
- LEQV
- Logická bitová ekvivalence všech bitů v operandech
Provozovatelé poboček a volání
- BRUN
- Větev bezpodmínečná (offset dán následujícími slabikami kódu)
- DBUN
- Dynamická větev nepodmíněná (offset uveden v horní části zásobníku)
- BRFL
- Větev, pokud je poslední výsledek nepravdivý (posun dán následujícími slabikami kódu)
- DBFL
- Dynamická větev, pokud je poslední výsledek nepravdivý (offset uveden v horní části zásobníku)
- BRTR
- Větev, pokud je poslední výsledek pravdivý (posun dán následujícími slabikami kódu)
- DBTR
- Dynamická větev, pokud je poslední výsledek pravdivý (offset uveden v horní části zásobníku)
- VÝSTUP
- Ukončit aktuální prostředí (ukončit proces)
- STBR
- Krok a větev (používá se ve smyčkách; operand musí být SIW)
- VSTUP
- Proveďte volání procedury, jak je dáno tagem 7 PCW, což má za následek RCW při D [n] + 1
- ZPĚT
- Vraťte se z aktuální rutiny na místo dané RCW v D [n] + 1 a odstraňte rám zásobníku
Bitové a polní operátory
- BSET
- Sada bitů (počet bitů daný slabikou podle pokynů)
- DBST
- Dynamická sada bitů (počet bitů daný obsahem B)
- BRST
- Bit reset (počet bitů daný slabikou podle pokynů)
- DBRS
- Dynamický reset bitů (počet bitů daný obsahem B)
- ISOL
- Polní izolát (pole uvedené v slabikách podle pokynů)
- DISO
- Izolát dynamického pole (pole zadané nad slovy zásobníku)
- FLTR
- Přenos pole (pole uvedené v slabikách podle pokynů)
- DFTR
- Přenos dynamického pole (pole zadané nad slovy zásobníku)
- INSR
- Vložení pole (pole uvedené v slabikách podle pokynů)
- DINS
- Vložení dynamického pole (pole zadané nad slovy zásobníku)
- CBON
- Počítat binární v horní části slova zásobníku (A nebo AX)
- SCLF
- Měřítko vlevo
- DSLF
- Dynamické měřítko vlevo
- SCRT
- Měřítko vpravo
- DSRT
- Dynamické měřítko vpravo
- SCRS
- Měřítko vpravo uložit
- DSRS
- Uložení dynamického měřítka vpravo
- SCRF
- Konečná stupnice vpravo
- DSRF
- Dynamické měřítko vpravo konečné
- SCRR
- Měřítko vpravo
- DSRR
- Dynamické měřítko vpravo
Doslovné operátory
- LT48
- Načtěte následující kódové slovo do horní části zásobníku
- LT16
- Nastavte vrchol zásobníku na následujících 16 bitů v proudu kódu
- LT8
- Nastavit horní část zásobníku na následující slabiku kódu
- NULA
- Zkratka pro LT48 0
- JEDEN
- Zkratka pro LT48 1
Operátory deskriptorů
- INDX
- Index vytvoří ukazatel (deskriptor kopírování) ze základního (MOM) deskriptoru
- NXLN
- Název indexu a načtení (výsledkem je indexovaný deskriptor)
- NXLV
- Index a hodnota zatížení (výsledkem je datová hodnota)
- EVAL
- Vyhodnoťte deskriptor (sledujte řetězec adres, dokud nebude nalezeno datové slovo nebo jiný deskriptor)
Provozovatelé zásobníků
- TLAČIT
- Zatlačte registr zásobníku
- DLET
- Pop horní část zásobníku
- VÝMĚNA
- Vyměňte si horní dvě slova ze zásobníku
- RSUP
- Otočit stoh nahoru (tři nejlepší slova)
- RSDN
- Otočit zásobník dolů (tři nejvýznamnější slova)
- DUPL
- Duplikovat horní část zásobníku
- MKST
- Označit hromádku (postavit nový rám hromádky vedoucí k MSCW nahoře,
- následuje NAMC k načtení PCW, poté se podle potřeby posune parametr, poté ENTR)
- IMKS
- Vložte MSCW do registru B.
- VALC
- Načtěte hodnotu do zásobníku, jak je popsáno výše
- NAMC
- Umístěte pár adres (adresa zásobníku IRW) na zásobník, jak je popsáno výše
- STFF
- Převeďte IRW umístěný NAMC na SIRW, který odkazuje na data v jiném zásobníku.
- MVST
- Přesunout do zásobníku (přepínač procesu se provádí pouze na jednom místě v MCP)
Provozovatelé obchodů
- STOD
- Uložit destruktivní (pokud má cílové slovo lichou značku, přerušte přerušení ochrany paměti,
- uložte hodnotu do registru B v paměti adresované registrem A. - Smažte hodnotu ze zásobníku.
- KAMEN
- Ukládejte nedestruktivní (stejné jako STOD, ale hodnota není odstraněna - užitečné pro výrazy F: = G: = H: = J).
- OVRD
- Přepsat destruktivní, STOD ignorující bit jen pro čtení (pro použití pouze v MCP)
- OVRN
- Přepsat nedestruktivní, STON ignorující bit jen pro čtení (pro použití pouze v MCP)
Načíst operátory
- ZATÍŽENÍ
- Načtěte hodnotu danou adresou (tag 5 nebo tag 1 slovo) do horní části zásobníku.
- V případě potřeby postupujte podle řetězce adres.
- LODT
- Načíst transparentní - načte slovo odkazované adresou na horní část zásobníku
Provozovatelé přenosu
Ty se používaly pro převody řetězců obvykle do doby, než byl ve zdrojovém řetězci detekován určitý znak.
- TWFD
- Přenos, zatímco je falešný, destruktivní
- TWFU
- Přenos je falešný, aktualizujte (pro další převody ponechte ukazatel na konci přenosu)
- TWTD
- Přenos je pravdivý, destruktivní
- TWTU
- Přeneste, když je to pravda, aktualizujte
- TWSD
- Přenášejte slova, destruktivní
- TWSU
- Přenášejte slova, aktualizujte
- TWOD
- Přenášejte slova, přepisujte destruktivní
- DVA
- Přenášejte slova, přepište aktualizaci
- TRNS
- Přeložit - přenese zdrojovou vyrovnávací paměť do cílového převádějícího znaky, jak je uvedeno v tabulce překladu.
- TLSD
- Přenos, zatímco méně destruktivní
- TLSU
- Přeneste méně, aktualizujte
- TGED
- Přenos, zatímco větší nebo rovný, destruktivní
- TGEU
- Přenášejte větší nebo rovné, aktualizujte
- TGTD
- Přenos, zatímco větší, destruktivní
- TGTU
- Přenos ještě větší, aktualizace
- TLED
- Přenos, zatímco menší nebo rovný, destruktivní
- TLEU
- Přenos, zatímco menší nebo rovný, aktualizujte
- TEQD
- Přenos je stejný, destruktivní
- TEQU
- Přeneste za stejných podmínek, aktualizujte
- TNED
- Přenos, i když není stejný, destruktivní
- TNEU
- Přenos není stejný, aktualizujte
- TUN
- Přenos bezpodmínečný, destruktivní
- TUNU
- Bezpodmínečný přenos, aktualizace
Operátoři skenování
Ty byly použity pro skenování struny užitečné při psaní překladače Všichni tito operátoři jsou chráněni před přetečení vyrovnávací paměti tím, že je omezen hranicemi v deskriptorech.
- SWFD
- Skenujte falešně, destruktivně
- SISO
- Řetězec izolovat
- SWTD
- Skenujte, zatímco je pravda, destruktivní
- SWTU
- Skenujte, zatímco je to pravda, aktualizujte
- SLSD
- Skenujte méně, destruktivně
- SLSU
- Skenujte, zatímco méně, aktualizujte
- SGED
- Skenujte, zatímco je větší nebo rovno, destruktivní
- SGEU
- Skenujte, pokud je větší nebo rovno, aktualizujte
- SGTD
- Skenujte, zatímco je větší, destruktivní
- SGTU
- Skenujte, zatímco je větší, aktualizujte
- SÁNĚ
- Skenujte, zatímco menší nebo stejné, destruktivní
- SLEU
- Skenujte při menší nebo stejné hodnotě, aktualizujte
- SEQD
- Skenujte stejně, destruktivně
- SEKV
- Skenujte za stejných podmínek, aktualizujte
- SNED
- Skenujte, i když to není stejné, destruktivní
- SNEU
- Skenujte, když se nerovná, aktualizujte
- CLSD
- Méně destruktivní porovnávání znaků
- CLSU
- Méně porovnávejte znaky, aktualizujte
- CGED
- Porovnávejte znaky větší nebo stejné, destruktivní
- CGEU
- Porovnávejte větší nebo rovné znaky, aktualizujte
- CGTD
- Porovnat charakter větší, destruktivní
- CGTU
- Větší porovnání znaků, aktualizace
- CLED
- Porovnávejte znaky menší nebo stejné, destruktivní
- CLEU
- Porovnávejte znaky menší nebo rovné, aktualizujte
- CEQD
- Porovnat stejný znak, destruktivní
- CEQU
- Porovnat stejný znak, aktualizovat
- CNED
- Porovnání nerovných znaků, destruktivní
- CNEU
- Porovnání nerovných znaků, aktualizace
Systém
- SINT
- Nastavit intervalový časovač
- EEXI
- Povolit externí přerušení
- DEXI
- Zakázat externí přerušení
- SCNI
- Skenovat - zahájit čtení IO, to se změnilo na různých architekturách
- SCNO
- Skenovat - zahájit zápis IO, to se změnilo na různých architekturách
- JELEN
- Nastavit značku (není povoleno v procesech na úrovni uživatele)
- RTAG
- Přečíst značku
- IRWL
- Hardwarový pseudo operátor
- SPRR
- Nastavit registr procesoru (vysoce závislý na implementaci, používá se pouze v nižších úrovních MCP)
- RPRR
- Čtení registru procesoru (vysoce závislé na implementaci, používá se pouze v nižších úrovních MCP)
- MPCW
- Vyrobte PCW
- STŮJ
- Zastavit procesor (požadováno operátorem nebo došlo k neodstranitelnému stavu)
jiný
- VARI
- Escape to extended (variabilní pokyny, které byly méně časté)
- OCRX
- Vyvolá index vytvoří slovo indexu výskytu používané ve smyčkách
- LLLU
- Vyhledání propojeného seznamu - Sledujte řetězec propojených slov, dokud není splněna určitá podmínka
- SRCH
- Maskované hledání stejné - Podobné jako LLLU, ale testování masky ve zkoumaných slovech na stejnou hodnotu
- TEED
- Editace tabulky destruktivní
- TEEU
- Vstup do tabulky upravit, aktualizovat
- EXSD
- Proveďte jeden mikro destruktivní
- EXSU
- Proveďte jednu mikro aktualizaci
- EXPU
- Proveďte jednu mikro aktualizaci s jedním ukazatelem
- NOOP
- Žádná operace
- NVLD
- Neplatný operátor (hexadecimální kód FF)
- Provozovatelé uživatelů
- nepřiřazení operátoři by mohli způsobit přerušení operačního systému, aby bylo možné zapisovat algoritmy zajišťující požadovanou funkčnost
Upravit operátory
Jednalo se o speciální operátory pro sofistikovanou manipulaci s řetězci, zejména pro obchodní aplikace.
- MIN
- Přesunout s vložením - vložte znaky do řetězce
- MFLT
- Pohybujte s plovákem
- SFSC
- Přeskočit dopředu zdrojový znak
- SRSC
- Přeskočit znaky zpětného zdroje
- RSTF
- Resetujte plovák
- ENDF
- Konec plováku
- MVNU
- Přesunout číselný bezpodmínečný
- MCHR
- Přesunout znaky
- INOP
- Vložte předražení
- INSG
- Vložte znak
- SFDC
- Přeskočit cílový znak vpřed
- SRDC
- Přeskočit zpět cílové znaky
- INSU
- Vložte bezpodmínečné
- INSC
- Vložte podmíněné
- ENDE
- Ukončit úpravy
Poznámky
- ^ Lexikální úroveň v slabice může odkazovat buď na označený bod v zásobníku aktuální úlohy, nebo na označený bod v zásobníku nadřazené úlohy. Termín zásobník může odkazovat na více souvisejících komínů, souhrnně označovaných jako a saguaro stack.
Reference
- ^ Burroughs (září 1969), Referenční příručka k systému zpracování informací Burroughs B6500 (PDF), 1043676