IBM 704: razlika između inačica
mNema sažetka uređivanja |
|||
| Redak 91: | Redak 91: | ||
|} | |} | ||
=== Opkodovi IBM 704 === | |||
{| class="wikitable sortable" | |||
|+ '''Kompletan popis opkoda IBM 704''' | |||
! Opkod | |||
! Mnemonik | |||
! Grupa | |||
! Opis | |||
|- | |||
| 000 | |||
| NOP | |||
| Kontrola | |||
| Prazna instrukcija; ne radi ništa. | |||
|- | |||
| 001 | |||
| HLT | |||
| Kontrola | |||
| Zaustavlja izvršavanje programa. | |||
|- | |||
| 002 | |||
| TRA | |||
| Grananje | |||
| Bezuvjetni skok na adresu. | |||
|- | |||
| 003 | |||
| TRN | |||
| Grananje | |||
| Skok ako je AC negativan. | |||
|- | |||
| 004 | |||
| TMI | |||
| Grananje | |||
| Skok ako je AC manji od nule. | |||
|- | |||
| 005 | |||
| TPL | |||
| Grananje | |||
| Skok ako je AC veći od nule. | |||
|- | |||
| 006 | |||
| TZE | |||
| Grananje | |||
| Skok ako je AC jednak nuli. | |||
|- | |||
| 007 | |||
| TOV | |||
| Grananje | |||
| Skok ako je overflow zastavica postavljena. | |||
|- | |||
| 010 | |||
| ADD | |||
| Aritmetika | |||
| Zbrajanje sadržaja memorije s AC. | |||
|- | |||
| 011 | |||
| SUB | |||
| Aritmetika | |||
| Oduzimanje sadržaja memorije od AC. | |||
|- | |||
| 012 | |||
| MPY | |||
| Aritmetika | |||
| Množenje; rezultat ide u AC/MQ. | |||
|- | |||
| 013 | |||
| DIV | |||
| Aritmetika | |||
| Dijeljenje; količnik u MQ, ostatak u AC. | |||
|- | |||
| 014 | |||
| CLA | |||
| Logičke | |||
| Učitava vrijednost u AC. | |||
|- | |||
| 015 | |||
| CLM | |||
| Logičke | |||
| Učitava vrijednost u MQ. | |||
|- | |||
| 016 | |||
| COM | |||
| Logičke | |||
| Komplementira AC. | |||
|- | |||
| 020 | |||
| SHL | |||
| Logičke | |||
| Pomak ulijevo. | |||
|- | |||
| 021 | |||
| SHR | |||
| Logičke | |||
| Pomak udesno. | |||
|- | |||
| 030 | |||
| AXT | |||
| Indeksiranje | |||
| Učitava vrijednost u XR1, XR2 ili XR4. | |||
|- | |||
| 031 | |||
| TXI | |||
| Indeksiranje | |||
| Dodaje vrijednost indeksnom registru. | |||
|- | |||
| 040 | |||
| RDS | |||
| I/O | |||
| Čitanje s magnetske vrpce. | |||
|- | |||
| 041 | |||
| WRS | |||
| I/O | |||
| Pisanje na magnetsku vrpcu. | |||
|- | |||
| 042 | |||
| RWT | |||
| I/O | |||
| Čekanje na I/O operaciju. | |||
|- | |||
| 050 | |||
| TSI | |||
| Sense Indicators | |||
| Testira Sense Indicator n. | |||
|- | |||
| 051 | |||
| SSI | |||
| Sense Indicators | |||
| Postavlja Sense Indicator n. | |||
|- | |||
| 052 | |||
| RSI | |||
| Sense Indicators | |||
| Resetira Sense Indicator n. | |||
|} | |||
==Registri== | ==Registri== | ||
Inačica od 7. srpanj 2026. u 09:42
Arhitektura IBM 704
IBM 704 bio je jedno od prvih komercijalnih računala koje je uvodilo napredne koncepte arhitekture, uključujući rad s pomičnim zarezom, indeksne registre i statusne indikatore. Sustav je bio dizajniran za znanstvene i tehničke izračune, što ga je činilo ključnim alatom u laboratorijima, sveučilištima i ranim zrakoplovnim projektima.
Aritmetička jedinica (AC i MQ)
Aritmetička jedinica sastojala se od dva glavna 36-bitna registra:
- AC (Accumulator) – glavni registar za aritmetiku.
- MQ (Multiplier/Quotient) – registar za množenje i dijeljenje.
Ova dva registra zajedno su omogućavala učinkovite operacije nad velikim brojevima i pomičnim zarezom.
Indeksni registri (XR1, XR2, XR4)
IBM 704 je koristio tri indeksna registra:
- XR1
- XR2
- XR4
Indeksni registri omogućavali su modifikaciju adresa, implementaciju petlji i rad s velikim poljima podataka. Ovo je bio preteča modernog adresiranja u procesorima.
Senzorni indikatori (SI)
Sustav je imao 36 senzorskih indikatora koji su služili kao statusne zastavice:
- indikatori grešaka (overflow, divide check)
- indikatori stanja I/O uređaja
- korisnički definirani indikatori
Programi su mogli testirati i postavljati SI bitove, što je omogućavalo primitivne oblike upravljanja tokom programa.
Memorija
IBM 704 koristio je magnetsku jezgru (magnetic core memory) kapaciteta:
- 4096 riječi × 36 bita
Ovo je bila jedna od najnaprednijih memorijskih tehnologija 1950-ih.
Ulazno/izlazni sustav
Podržani uređaji uključivali su:
- magnetske vrpce
- čitač kartica
- bušilicu kartica
- pisač
- konzolu operatera
I/O operacije su se signalizirale preko Sense Indicators.
Instrukcijski format
Instrukcije su bile 36-bitne, s poljima:
- opkod
- adresa
- indeksni modifikator
- bitovi za uvjetno grananje
Ovaj format omogućavao je fleksibilno adresiranje i kontrolu toka programa.
Instrukcijski skup IBM 704
| Grupa | Primjeri | Opis |
|---|---|---|
| Aritmetičke instrukcije | ADD, SUB, MPY, DIV | Operacije nad AC i MQ registrima; podrška za cijele brojeve i pomični zarez. |
| Logičke instrukcije | CLA, CLM, COM | Čišćenje, komplementiranje i manipulacija bitovima. |
| Uvjetno grananje | TRA, TMI, TPL, TZE | Skokovi ovisno o sadržaju AC ili MQ. |
| Rad sa Sense Indicators | TSI, SSI, RSI | Testiranje, postavljanje i resetiranje statusnih bitova. |
| Indeksno adresiranje | AXT, TXI | Modifikacija adresa pomoću XR1, XR2, XR4. |
| Ulazno/izlazne instrukcije | RDS, WRS, RWT | Rad s magnetskom vrpcom, kartičnim čitačem i pisačem. |
| Kontrola toka programa | HLT, NOP | Zaustavljanje programa, prazna instrukcija. |
Opkodovi IBM 704
| Opkod | Mnemonik | Grupa | Opis |
|---|---|---|---|
| 000 | NOP | Kontrola | Prazna instrukcija; ne radi ništa. |
| 001 | HLT | Kontrola | Zaustavlja izvršavanje programa. |
| 002 | TRA | Grananje | Bezuvjetni skok na adresu. |
| 003 | TRN | Grananje | Skok ako je AC negativan. |
| 004 | TMI | Grananje | Skok ako je AC manji od nule. |
| 005 | TPL | Grananje | Skok ako je AC veći od nule. |
| 006 | TZE | Grananje | Skok ako je AC jednak nuli. |
| 007 | TOV | Grananje | Skok ako je overflow zastavica postavljena. |
| 010 | ADD | Aritmetika | Zbrajanje sadržaja memorije s AC. |
| 011 | SUB | Aritmetika | Oduzimanje sadržaja memorije od AC. |
| 012 | MPY | Aritmetika | Množenje; rezultat ide u AC/MQ. |
| 013 | DIV | Aritmetika | Dijeljenje; količnik u MQ, ostatak u AC. |
| 014 | CLA | Logičke | Učitava vrijednost u AC. |
| 015 | CLM | Logičke | Učitava vrijednost u MQ. |
| 016 | COM | Logičke | Komplementira AC. |
| 020 | SHL | Logičke | Pomak ulijevo. |
| 021 | SHR | Logičke | Pomak udesno. |
| 030 | AXT | Indeksiranje | Učitava vrijednost u XR1, XR2 ili XR4. |
| 031 | TXI | Indeksiranje | Dodaje vrijednost indeksnom registru. |
| 040 | RDS | I/O | Čitanje s magnetske vrpce. |
| 041 | WRS | I/O | Pisanje na magnetsku vrpcu. |
| 042 | RWT | I/O | Čekanje na I/O operaciju. |
| 050 | TSI | Sense Indicators | Testira Sense Indicator n. |
| 051 | SSI | Sense Indicators | Postavlja Sense Indicator n. |
| 052 | RSI | Sense Indicators | Resetira Sense Indicator n. |
Registri
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Senzorni indikatori
Senzorni indikatori - su posebni statusni bitovi u IBM 704 koj su se u praksi rabili za provjeru grešaka, grananje ovisno o stanju sustava, upravljanje perifernim jedinicama, te za signalizaciju posebnih događaja. Kroz njih programeri su mogli održavati stanje sustava, signalizirati određene uvjete tokom izvršavanje naredbi, čitanje i postavljanje naredbi i tako su služili za jednostane oblike upravljanja tokom programa.
| SI broj | Naziv / funkcija | Opis |
|---|---|---|
| 0 | Overflow flag | Postavlja se pri prekoračenju rezultata u akumulatoru (AC) ili količniku (MQ). |
| 1 | Divide check | Signalizira pogrešku pri dijeljenju, uključujući dijeljenje nulom. |
| 2 | I/O ready | Uređaj spreman za prijenos podataka. |
| 3 | I/O complete | Završetak operacije ulaza/izlaza. |
| 4 | Tape mark | Očitana oznaka kraja bloka na magnetskoj vrpci. |
| 5 | Printer ready | Pisač spreman za rad. |
| 6 | Card reader ready | Čitač kartica spreman. |
| 7 | Card punch ready | Bušilica kartica spremna. |
| 8–15 | Peripheral flags | Razni signali perifernih uređaja (disk, vrpca, pisač). |
| 16–35 | User-defined flags | Zastavice koje programer može slobodno koristiti za logiku grananja. |
Korištenje u IBM 704 assembleru
IBM 704 je imao posebne instrukcije za rad sa Sense Indicators:
- TSI n
- Testira Sense Indicator n. Ako je postavljen, izvršavanje se nastavlja normalno; ako nije, preskače se sljedeća instrukcija.
TSI 3 / provjeri je li I/O complete
TRA DONE / ako je postavljen, skoči na DONE
- SSI n
- Postavlja Sense Indicator n.
- RSI n
- Resetira Sense Indicator n.
TSI 1 / provjeri divide check
TRA ERROR / ako je SI1 = 1, idi na ERROR
SSI 20 / postavi korisnički indikator 20
RSI 3 / resetiraj I/O complete indikator
Usporedba s modernim statusnim registrima
| IBM 704 Sense Indicators | Moderni statusni registri (x86, ARM, RISC-V) |
|---|---|
| 36 jednobitnih zastavica | 8–32 bitni statusni registri |
| Ručno postavljanje i brisanje | Automatsko postavljanje od strane ALU |
| Koriste se za I/O signalizaciju | I/O signalizacija preko interrupt kontrolera |
| Jednostavne logičke zastavice | Zastavice za aritmetiku, usporedbe, prekide |
| Programer koristi dio SI kao "user flags" | Moderni jezici koriste varijable, strukture, objekte |
| Grananje preko TSI instrukcije | Grananje preko CMP/JMP, BEQ/BNE, BLT/BGT |