NO122458B - - Google Patents
Download PDFInfo
- Publication number
- NO122458B NO122458B NO3074/68A NO307468A NO122458B NO 122458 B NO122458 B NO 122458B NO 3074/68 A NO3074/68 A NO 3074/68A NO 307468 A NO307468 A NO 307468A NO 122458 B NO122458 B NO 122458B
- Authority
- NO
- Norway
- Prior art keywords
- instruction
- address
- register
- jump
- sequences
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 8
- 230000009191 jumping Effects 0.000 claims description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
Fremgangsmåte for utførelse av sprang i en datamaskins instruksjonshukommelse.
Den foreliggende oppfinnelse vedrbrer en fremgangsmåte for utfbrelse av sprang til en blant flere instruksjonssekvenser valgbar instruksjonssekvens i en datamaskins instruksjonshukommelse, hvilke sprang styres av en spranginstruksjon bestående av en operasjonsdel og en variabel del omfattende et antall variable storrelser.
De operasjoner som utfores i en datamaskin, og i hvilken orden dette skjer, bestemmes av instruksjoner som er lagret i en instruksjonshukommelse i form av et program. For å kunne utfore sprang i programmet, f.eks. for å utfore en ofte tilbake-vendende instruksjon eller instruksjonssekvens som finnes lagret på et vilkårlig sted i instruksjonshukommelsen, inneholder programmet en såkalt spranginstruksjon som på kjent måte består av en operasjonsdel og en variabeldel. Variabeldelen består av modi-fikatordel og variabler, hvorved modifikatordelen bestemmer et sprang til en i variabeldelen angitt adresse i instruksjonshukommelsen i hvilken den onskede instruksjonssekvensens forste instruksjon finnes lagret. Sekvénsens siste instruksjon medforer deretter et tilbakesprang til den instruksjon som i programmet forekommer etter spranginstruksjonen. Ulempen med denne fremgangsmåte er dels at en viss spranginstruksjon alltid adresserer samme instruksjonssekvens, dels at hvis en sekvens skal gjennom-løpes et stort antall ganger, må tilsvarende antall sprangin-struksjoner finnes lagret i programmet.
Hensikten med den foreliggende oppfinnelse er å tilveiebringe en fremgangsmåte ved hvilken disse ulemper elimineres. Fremgangsmåten kjennetegnes ved at et bestemt tall i variabeldelen subtraheres fra den adresse som angir spranginstruksjonens stilling i hukommelsen, hvorved det oppnåes en tidligere adresse som lagres i et forste register, samt at innholdet i et andre register som utpekes av en adresse i nevnte variabeldel, adderes til adressen for spranginstruksjonen, hvor, .ordet på den således oppnådde summeadresse utgjor adressen til den forste instruksjonen i en av de valgbare instruksjonssekvensene i hvilke respektive sekvenser den siste instruks jonemutpeker det forste .registeret slik at deniinstruksjon som befinner seg på nevnte tidligere adresse, velges,og slik at ved modifikasjon av innholdet i nevnte andre register i avhengighet av gjennomlopning av den mellom instruksjonen på nevnte tidligere adresse og spranginstruksjonen forekommende instruksjonssekvens, onskede instruksjonssekvénser kan gjennomlbpes.
Oppfinnelsen skal nærmere forklares under henvisning til tegningene på hvilke
i
fig. 1 er et diagram som forklarer oppfinnelsens prinsipp og i
Fig. 2 viser et eksempel på en anordning for utfSrelse av fremgangsnåten ifblge oppfinnelsen.
I fig. 1 betegnes med I en instruksjonssekvens som danner hovedprogrammet i en datamaskin. Fra dette program onsker man å utfore sprang til et av et antall subprogram av hvilke to som er betegnet med 1-^ og I^» er angitt på figuren. I fig. 1 betegner de rektangulære felt i programmene instruksjoner, hvorved instruksjonsinnholdet er markert i feltene og instruksjonens adresse er angitt til venstre for respektive felt.
På adressen n forefinnes den instruksjon som bestemmer spranget til subprogrammene. Denne instruksjon består dels av en med TAL markert operasjonsdel, dels av en variabeldel inneholdende to variable stbrrelser Rx og D. Når man ved gjennomlopning av hovedprogrammet adresserer denne instruksjon, styrer opera-sjonsdelen fblgende operasjoner med de variable stbrrelser. Forst subtraheres den med D betegnede variable fra det tall
(n) som angir instruksjonsadressen, og det således oppnådde resultat (n-D) som utgjor en tidligere i hovedprogrammet opp-tredende adresse, lagres. Deretter adresseres ved hjelp av den variable Rx et register i sentralenheten hvis innhold f.eks. kan være.l, hvilket skal forklares nærmere nedenfor. Innholdet i dette register (1) adderes deretter til instruksjonsadressen (n), hvorved adressen n+1 oppnåes, og denne adresse utpekes i programmet. På denne adresse finnes lagret adressen til den forste instruksjon (p) i subprogrammet I2? hvorved et sprang til dette tilveiebringes og sentralenheten begynner å operere ifblge instruksjonene i dette subprogram.
På den siste adresse i subprogrammet finnes lagret en instrusjon som utpeker det register i hvilket subtraksjonsresultatet n-D finnes lagret og adresserer instruksjonen på denne adresse. Herved vil man vende tilbake til hovedprogrammet ved posisjonen n-D og vende tilbake til spranginstruksjbnen ved adressen n etter å ha gjennomlbpt den med E betegnede del av programmet. Denne programdel kan utnyttes for uavhengig eller avhengig
av resultatet i det siste gjennomløpte subprogram, å modifisere innholdet i det register som adresseres av den variable stbrrelse Rx i spranginstrusjonen. Sekvensen E kan f .eks.
inneholde en instruksjon som hver gang sekvensen gjennomløpes,
oker innholdet i registeret med 1, hvilket er antydet i fig. 1, hvorved i tur og orden adressene n+1, n+2, n+3 o.s.v. vil
utpekes av spranginstruksjoneen på adressen n. Man kan således
med kun en eneste spranginstruksjon hoppe et onsket antall ganger til et av et antall subprogram, og antallet subprogram kan prinsipielt gjbres så stort man måtte bnske.
I fig. 2 som skjematisk viser de i en sentralenhet for sprang-instruks jonens utforelse nodvendige koblingselementer, betegnes med IM en instruksjonshukommelse i hvilken de instruksjoner som styrer datamaskinens operasjoner, finnes lagret. Til denne hukommelse horer et adresseregister IA og et resultatregister IR, og hukommelsen fungerer på en slik måte at når en adresse skrives inn i adresseregisteret, fåes den på adressen forekommende instruksjon i resultatregisteret. Man antar at den på adressen n i fig. 1 lagrede spranginstruksjon på denne måte
er oppnådd i registeret IR og via en OG-port Gl, et program-register PIR og en OG-port. G2 overfort til et operasjonsregister $PR som er forbundet med en til en styreenhet SE horende dekoder AVK. Denne består av tre deler AVKI, AVK.2 og AVK3 av hvilke
delen AVKI inneholder instruksjonens operasjonsdel (TAL),
delen AVK2 registeradressen R og delen AVK3 den variable D. Dekoderen aktiverer et antall innganger i styreenheten, hvor-
ved denne som på konvensjonell måte består av et logikknett
og et skyveregister som trinnbeveges av en pulsgener-ator, av-
gir etter hverandre fblgende utgangspulser på et antall utganger som er betegnet med 1, 2 ... 3. Disse utganger er forbundet med innganger på OG-porter Gl-G lo og G12-G15 forsynt medl tilsvarende sifferbetegnelsef i sentralenheten.Pulsen pa utgangjen 1. } styreenheten SE vil således åpne portene G5 og G12,hvorved
i innholdet i adresseregisteret IA, hvilket utgjores av adressen i til spranginstruksjonen (n i fig. 1), overfores til et operand-'
register DB i en aritmetisk enhet AR. Pulsen 2 åpner deretter j portene G13 og G15, hvorved innholdet i et register PRA som
inneholder det tall som skal adderes til instruksjonsadressen, overfores til et andre operandregister DA i den aritmetiske
enheten. Registerets PRA adressering bestemmes derved av den varible Rx, og addisjonen utfores i lbpet av puls 3 som aktiverer en addisjonsinngang ADD hos den aritmetiske enhet, og den således oppnådde sum overfores i lbpet av pulsene 4
og 5 via portene G7 og G6 forst til et programutregister PØR og deretter via porten (3*+ til adresseregisteret IA, hvorved den • på den oppnådde sumadresse forekommende instruksjon utleses til resultatregisteret IR. Denne instruksjon som utgjbres av adressen til den forste instruksjon i et subprogram (f.eks. p i fig. 1), overfores deretter i lbpet av pulsene 6 og 7 via porten Gl, et programinnregister PIR, og porten G3 til'programutregisteret PØR. I lbpet av pulsen 8 overfores det tall (D) i spranginstruksjonens variabeldel som skal subtraheres fra instruksjonsadressen (n) fra dekoderen til operandregisteret DA, via portene G9 og G13. I det andre operandregisteret gjenstår instruksjonsadressen (n), og sub-traksjonen utfores i lbpet av pulsen 9 som aktiverer en sub-traksjonsinngang SUB hos den.aritmetiske enhet. Det i registeret AD (ppnådde resultatet (n-D.) overfores deretter i lbpet av pulsen 10 til et register LRA via portene G7 og G8. De tre siste pulsene 11, 12 og 13 overforer deretter innholdet i registeret PØR til instruksjonsadresseregisteret IA og mater den på adressen forekommende instruksjonen (p) fra resultatregisteret IR via programregisteret PIR til ordreregisteret #PR, hvorved operasjonene i det valgte subprogram påbegynnes. Som antydet i fig. 1, avsluttes hvert subprogram med en instruksjon som overforer innholdet i registeret LRA til programutregisteret PØR, hvorfra det mates videre til adresseregisteret IA. Herved oppnåes at man etter gjennomlbpning av et subprogram alltid vender tilbake til en foran spranginstruksjonen forekommende adresse (n-D) og derved gjennomlbper sekvensen E i lbpet av hvilken innholdet i registeret PRA kan modifiseres slik at nestfblgende sprang skjer til bnsket instruksjonssekvens. Det er selvfølgelig også mulig å utfore denne modifikasjon i subprogrammet.
Fremgangsmåten ifblge oppfinnelsen innebærer således at man på en enkel måte, uten å benytte ..datahukommelsen, kan la en
spranginstruksjon styre sprang til et av et vilkårlig antall subprogram,og hvilket av subprogrammene som velges, kan gjbres avhengig av de som tidligere er gjennomlopt.
Claims (1)
- Fremgangsmåte for utforelse av sprang til en blant flere instruksjonssekvenser valgbar instruksjonssekvens i en for valg av instruksjoner med programtellere forsynt datamaskins instrultøjonshukommelse, hvilke sprang styres av en eneste for sprang til hvilken som helst av disse sekvenser anvendt spranginstruksjon bestående av en operasjonsdel og en variabeldel omfattende et antall variable stbrrelser, karakterisert ved at et bestemt tall i variabeldelen subtraheres fra den adresse som angir spranginstruksjonens stilling i hukommelsen, hvorved oppnåes en tidligere adresse som lagres i et forste register (LRA), samt at innholdet i et andre register (PRA) som utpekes av en adresse i nevnte variabeldel, adderes til adressen for spranginstruksjonen, hvoi ordet på den oppnådde summeadresse utgjor adressen til den forste instruksjonen i en av de valgbare instruksjonssekvenser i hvilke respektive sekvenser den siste instruksjonen utpeker det forste registeret slik at den instruksjon som befinner seg på nevnte tidligere adresse, velges og slik at ved modifikasjon av innholdet i nevnte andre register i avhengighet av gjennomlbpning av den mellom instruksjonen på nevnte tidligere adresse og spranginstruksjonen forekommende instruksjonssekvens, onskede instruksjonssekvenser kan gjennomlbpes.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE12071/67A SE303056B (no) | 1967-08-31 | 1967-08-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
NO122458B true NO122458B (no) | 1971-06-28 |
Family
ID=20295088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO3074/68A NO122458B (no) | 1967-08-31 | 1968-08-05 |
Country Status (9)
Country | Link |
---|---|
US (1) | US3571804A (no) |
BE (1) | BE719886A (no) |
DE (1) | DE1774601A1 (no) |
FI (1) | FI50815C (no) |
FR (1) | FR1585651A (no) |
GB (1) | GB1184317A (no) |
NL (1) | NL6812372A (no) |
NO (1) | NO122458B (no) |
SE (1) | SE303056B (no) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1774038A1 (de) * | 1967-04-01 | 1971-07-29 | Olivetti & Co Spa | Elektronische Rechenanlage |
US3728689A (en) * | 1971-06-21 | 1973-04-17 | Sanders Associates Inc | Program branching and register addressing procedures and apparatus |
US3889242A (en) * | 1971-10-04 | 1975-06-10 | Burroughs Corp | Modifiable computer function decoder |
JPS54613B2 (no) * | 1971-10-04 | 1979-01-12 | ||
US3839630A (en) * | 1971-12-27 | 1974-10-01 | Hewlett Packard Co | Programmable calculator employing algebraic language |
JPS5529456B2 (no) * | 1974-02-12 | 1980-08-04 | ||
JPS5161749A (en) * | 1974-11-26 | 1976-05-28 | Fujitsu Ltd | Deetashorisochino shoriringuseigyohoshiki |
US4124893A (en) * | 1976-10-18 | 1978-11-07 | Honeywell Information Systems Inc. | Microword address branching bit arrangement |
US4309753A (en) * | 1979-01-03 | 1982-01-05 | Honeywell Information System Inc. | Apparatus and method for next address generation in a data processing system |
US5961639A (en) * | 1996-12-16 | 1999-10-05 | International Business Machines Corporation | Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution |
US6857063B2 (en) * | 2001-02-09 | 2005-02-15 | Freescale Semiconductor, Inc. | Data processor and method of operation |
US6845501B2 (en) * | 2001-07-27 | 2005-01-18 | Hewlett-Packard Development Company, L.P. | Method and apparatus for enabling a compiler to reduce cache misses by performing pre-fetches in the event of context switch |
US20090182984A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Execute Relative Long Facility and Instructions Therefore |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3292155A (en) * | 1963-03-15 | 1966-12-13 | Burroughs Corp | Computer branch command |
DE1190706B (de) * | 1963-07-17 | 1965-04-08 | Telefunken Patent | In zwei abwechselnden Zyklen arbeitende programmgesteuerte elektronische digitale Rechenmaschine |
US3290658A (en) * | 1963-12-11 | 1966-12-06 | Rca Corp | Electronic computer with interrupt facility |
US3348211A (en) * | 1964-12-10 | 1967-10-17 | Bell Telephone Labor Inc | Return address system for a data processor |
US3408630A (en) * | 1966-03-25 | 1968-10-29 | Burroughs Corp | Digital computer having high speed branch operation |
FR1536616A (fr) * | 1966-09-21 | Ibm | Système de traitement d'instructions avec des perfectionnements pour le branchementet les boucles du programme | |
US3480917A (en) * | 1967-06-01 | 1969-11-25 | Bell Telephone Labor Inc | Arrangement for transferring between program sequences in a data processor |
-
1967
- 1967-08-31 SE SE12071/67A patent/SE303056B/xx unknown
-
1968
- 1968-07-16 FI FI682024A patent/FI50815C/fi active
- 1968-07-24 US US747375A patent/US3571804A/en not_active Expired - Lifetime
- 1968-07-25 DE DE19681774601 patent/DE1774601A1/de active Pending
- 1968-08-05 NO NO3074/68A patent/NO122458B/no unknown
- 1968-08-21 GB GB40088/68A patent/GB1184317A/en not_active Expired
- 1968-08-22 FR FR1585651D patent/FR1585651A/fr not_active Expired
- 1968-08-23 BE BE719886D patent/BE719886A/xx unknown
- 1968-08-30 NL NL6812372A patent/NL6812372A/xx unknown
Also Published As
Publication number | Publication date |
---|---|
US3571804A (en) | 1971-03-23 |
NL6812372A (no) | 1969-03-04 |
GB1184317A (en) | 1970-03-11 |
FI50815B (no) | 1976-03-31 |
DE1774601A1 (de) | 1971-07-15 |
SE303056B (no) | 1968-08-12 |
FR1585651A (no) | 1970-01-30 |
BE719886A (no) | 1969-02-03 |
FI50815C (fi) | 1976-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US3781823A (en) | Computer control unit capable of dynamically reinterpreting instructions | |
US3949379A (en) | Pipeline data processing apparatus with high speed slave store | |
NO122458B (no) | ||
US3689895A (en) | Micro-program control system | |
EP0185215A2 (en) | Forth-like language microprocessor | |
GB1481392A (en) | System and method for concurrent and pipeline processing employing a data driven network | |
US3161763A (en) | Electronic digital computer with word field selection | |
GB1129660A (en) | Data processors | |
US4037213A (en) | Data processor using a four section instruction format for control of multi-operation functions by a single instruction | |
US3302183A (en) | Micro-program digital computer | |
US3980991A (en) | Apparatus for controlling microprogram jumps in a microprogrammable electronic computer | |
US3200379A (en) | Digital computer | |
GB1007415A (en) | Digital computer | |
EP0070863A1 (en) | CONTROL UNIT WITH SAVED PROGRAM. | |
US3699526A (en) | Program selection based upon intrinsic characteristics of an instruction stream | |
US3737864A (en) | Method and apparatus for bypassing display register update during procedure entry | |
US3058658A (en) | Control unit for digital computing systems | |
US3001708A (en) | Central control circuit for computers | |
US3239820A (en) | Digital computer with automatic repeating of program segments | |
US3394350A (en) | Digital processor implementation of transfer and translate operation | |
US4240137A (en) | Computer for directly executing a program including a plurality of structured blocks | |
US3226691A (en) | Data processing apparatus | |
US4179748A (en) | Programmer and method of storing information therein and accessing information therefrom | |
CN105988775A (zh) | 处理器、程序代码转换装置以及软件 | |
US6961846B1 (en) | Data processing unit, microprocessor, and method for performing an instruction |