IBM 704: razlika između inačica

Izvor: Hrvatska internetska enciklopedija
Prijeđi na navigaciju Prijeđi na pretraživanje
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

Glavne grupe instrukcija 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

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 u računalu IBM 704
Podatkovni registri
S Q P 01 02 03 ... 17 18 19 20 21 ... 35 (mjesto bit-a)
Akumulator AC
S   Množitelj/Količnik MQ
00 01 02 03 ... 17 18 19 20 21 ... 35 (mjesto bit-a)
  Senzorni indikatori SI
Indeksni registri
03 ... 17 (mjesto bit-a)
  Indeksni Registar 1   XR1 (XRA)
  Indeksni Registar 2   XR2 (XRB)
  Indeksni Registar 4   XR4 (XRC)
Brojač naredbi
03 ... 17 (mjesto bit-a)
  Brojač Naredbi   IC


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.

Sense Indicators (IBM 704)
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