Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Addressing mode
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Register autoincrement indirect=== +------+-----+-------+ | load | reg | base | +------+-----+-------+ (Effective address = contents of base register) After determining the effective address, the value in the base register is incremented by the size of the data item that is to be accessed. For example, (A7)+ would access the content of the address register A7, then increase the address pointer of A7 by 1 (usually 1 word). Within a loop, this addressing mode can be used to step through all the elements of an array or vector. In high-level languages it is often thought to be a good idea that functions which return a result should not have [[side effect (computer science)|side effects]] (lack of side effects makes program understanding and validation much easier). This addressing mode has a side effect in that the base register is altered. If the subsequent memory access causes an error (e.g. page fault, bus error, address error) leading to an interrupt, then restarting the instruction becomes much more problematic since one or more registers may need to be set back to the state they were in before the instruction originally started. There have been at least three computer architectures that have had implementation problems with regard to recovery from faults when this addressing mode is used: *[[Digital Equipment Corporation|DEC]] [[PDP-11]]. Could have one or two autoincrement register operands.<ref>{{cite book |url=http://www.bitsavers.org/pdf/dec/pdp11/handbooks/EB-23657-18_PDP-11_Architecture_Handbook_1983.pdf |title=PDP-11 Architecture Handbook |publisher=[[Digital Equipment Corporation]] |date=1973}}</ref> Some models, such as the PDP-11/45 and PDP-11/70, had a register that recorded modifications to registers, allowing the fault handler to undo the register modifications and re-execute the instruction.<ref>{{cite book |url=http://www.bitsavers.org/pdf/dec/pdp11/handbooks/PDP-1145_Handbook_1973.pdf |title=PDP-11/45 Processor Handbook |pages=150β153 |publisher=[[Digital Equipment Corporation]] |date=1973}}</ref> *[[Motorola 68000 series]]. Could have one or two autoincrement register operands.<ref>{{cite book |url=http://bitsavers.org/components/motorola/68000/M68000PM_AD_Rev_1_Programmers_Reference_Manual_1992.pdf |title=M68000 Family Programmer's Reference Manual |publisher=[[Motorola]] |date=1992}}</ref> The [[68010]] and later processors resolved the problem by saving the processor's internal state on [[bus error|bus]] or address errors and restoring it when returning from the fault.<ref>{{cite book |url=http://bitsavers.org/components/motorola/68000/MC68010_68012_Data_Sheet_May85.pdf |title=MC68010/MC68012 16-/32-Bit Virtual Memory Microprocessors |pages=5{{hyp}}12-5{{hyp}}15 |publisher=[[Motorola]] |date=May 1985}}</ref><ref>{{cite book |url=http://bitsavers.org/components/motorola/68000/MC68020_32-Bit_Microprocessor_Users_Manual_1984.pdf |title=MC68020 32-Bit Microprocessor User's Manual |pages=6{{hyp}}9-6{{hyp}}10 |publisher=[[Prentice-Hall]] |date=1984 |isbn=0-13-541418-0}}</ref><ref>{{cite book |url=http://bitsavers.org/components/motorola/68000/MC68030_Users_Manual_3ed_1990.pdf |title=MC68030 Enhanced 32-Bit Microprocessor User's Manual |edition=Third |pages=8{{hyp}}7-8{{hyp}}8 |publisher=[[Prentice-Hall]] |date=1990 |isbn=0-13-566423-3}}</ref><ref>{{cite book |url=http://bitsavers.org/components/motorola/68000/MC68040_Users_Manual_1989.pdf |title=MC68040 32-Bit Microprocessor User's Manual |edition=Third |pages=9{{hyp}}8-9{{hyp}}9 |publisher=[[Motorola]] |date=1989}}</ref> *DEC [[VAX]]. Could have up to 6 autoincrement register operands. The First Part Done bit in the saved [[status register|processor status longword]] in a stack frame for a fault is set if the faulting instruction must not be restarted at the beginning, resolving the problem.<ref>{{cite book |url=http://www.bitsavers.org/pdf/dec/vax/archSpec/EY-3459E-DP_VAX_Architecture_Reference_Manual_1987.pdf |title=VAX Architecture Reference Manual |page=21 |publisher=[[Digital Equipment Corporation]] |date=1987 |isbn=0-932376-86-X}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)