در علوم نظری کامپیوتر، مدل ماشین برنامهٔ ذخیره شده با دسترسی تصادفی (RASP) یک ماشین انتزاعی است که برای اهداف توسعهٔ الگوریتم و نظریهٔ پیچیدگی الگوریتم مورد استفاده قرار می گیرد. RASP یک مدل ماشین دسترسی تصادفی (RAM) است که بر خلاف RAM، برنامه اش به همراه ورودی، درون "رجیستر"های آن قرار دارد. رجیسترها نامحدود (دارای ظرفیت بینهایت) هستند؛ محدود بودن تعداد رجیسترها، به مدل بستگی دارد؛ بنابراین نسبت RASP به RAM، مانند ماشین تورینگ جهانی به ماشین تورینگ است. RASP نمونه ای از معماری فون نویمان است، درحالیکه RAM نمونه ای از معماری هاروارد می باشد. از میان تمام مدل های انتزاعی، RASP نزدیک ترین مدل به مفهوم متداول کامپیوتر است. اما برخلاف کامپیوترهای واقعی، مدل RASP معمولاً دارای مجموعهٔ ساختاری بسیار ساده ای است که تا حد زیادی از CISC و حتی پردازشگرهای RISC به صورت ساده ترین "حرکات" حسابی و رجیستر به رجیستر، و همچنین فرمان های "آزمون/جهش" ساده شده اند. برخی مدل ها، مانند یک انباشتگر، دارای رجیسترهای کمی بیشتر هستند.RASP به همراه ماشین رجیستر، RAM و ماشین اشاره گر، چهار مدل ماشین متوالی رایج را ایجاد می کند، که جهت تمایز آن ها از مدل های "موازی" (مثلاً، ماشین دسترسی تصادفی موازی) به این نام خوانده می شوند (van Emde Boas (1990)).
کپی غیرمستقیم از i و مستقیم به j: CPY <<hi>>,<hj>
کپی مستقیم از i و غیرمستقیم به j: CPY <hi>,<<hj>>
RASP یک ماشین تورینگ جهانی (UTM) است که بر کالبد یک RAM ماشین دسترسی تصادفی ساخته شده است. خواننده به یاد خواهد آورد که UTM یک ماشینگ تورینگ با یک فهرست فرمان های "جهانی" حالت محدود است که می تواند هرگونه "برنامه"ی به خوبی شکل گرفته و نوشته شده بر روی یک نوار ضبط به عنوان یک رشته تورینگ ۵تایی، و از اینرو عمومیت آن، را تفسیر نماید. در حالیکه انتظار می رود تا مدل UTM، تورینگ ۵تایی را بر روی نوار خود بیابد، هر مجموعه برنامهٔ قابل تصور را، با توجه به اینکه ماشین تورینگ انتظار دارد که آن هارا بیابد، می توان در آنجا قرار داد، با توجه به اینکه فهرست حالت محدود آن می تواند آن مجموعه برنامه را تفسیر نموده و آن ها را به عمل دلخواه تبدیل نماید. در کنار برنامه، سایر موارد چاپ شده بر روی نوار، داده-ها/مولفه ها/اعداد ورودی (معمولاً در سمت راست برنامه)، و در نهایت داده ها/اعداد خروجی (معمولاً در سمت راست هر دوی آن ها، یا آمیخته با ورودی ها، یا جایگزین آن ها) خواهند بود. "کاربر" باید ابتدای ماشین تورینگ را بالاتر از اولین فرمان قرار دهد، و ورودی ها باید در یک محل خاص و قالبی مناسب هم برای برنامهٔ روی نوار و هم برای فهرست فرمان های ماشین حالت محدود جای دهد.RASP از این فرمان تقلید می کند: "برنامه" و "داده هاً را درون حفره ها (رجیسترها) جای می دهد. اما برخلاف UTM، RSAP اقدام به "واکشی" فرمان هایش به صورت ترتیبی می کند، مگر اینکه آزمون شرطی آن ها را به جای دیگری ارسال نماید.نکتهٔ تردید دو مجموعه فرمان: مدل RASP، بر خلاف UTM، دارای دو مجموعه فرمان است؛ فهرست فرمان های حالت ماشین ("مفسر") و "برنامه" درون حفره ها.
نمونه برنامهٔ زیر مقادیر رجیستر (حفره) #۱۸ را به رجیستر (حفره) #۱۹ انتقال داده و مقادیر #۱۸ را در این فرایند پاک خواهد نمود.
5: 03 18 15 JZ 18,15 ; if is zero, jump to 15 to end the program 02 18 DEC 18 ; Decrement 01 19 INC 19 ; Increment 03 19 05 JZ 15, 5 ; If is zero, jump to 5 to repeat the loop (use Halt to simulate unconditional jump) 15: 00 H ; Halt18: n ; Source value to copy 19: ; Destination for copyفرمان های برنامه ای موجود در این ماشین RASP، مجموعه ای ساده جهت خلاصه سازی این مثال خواهند بود:
کپی غیرمستقیم از i و مستقیم به j: CPY <<hi>>,<hj>
کپی مستقیم از i و غیرمستقیم به j: CPY <hi>,<<hj>>
RASP یک ماشین تورینگ جهانی (UTM) است که بر کالبد یک RAM ماشین دسترسی تصادفی ساخته شده است. خواننده به یاد خواهد آورد که UTM یک ماشینگ تورینگ با یک فهرست فرمان های "جهانی" حالت محدود است که می تواند هرگونه "برنامه"ی به خوبی شکل گرفته و نوشته شده بر روی یک نوار ضبط به عنوان یک رشته تورینگ ۵تایی، و از اینرو عمومیت آن، را تفسیر نماید. در حالیکه انتظار می رود تا مدل UTM، تورینگ ۵تایی را بر روی نوار خود بیابد، هر مجموعه برنامهٔ قابل تصور را، با توجه به اینکه ماشین تورینگ انتظار دارد که آن هارا بیابد، می توان در آنجا قرار داد، با توجه به اینکه فهرست حالت محدود آن می تواند آن مجموعه برنامه را تفسیر نموده و آن ها را به عمل دلخواه تبدیل نماید. در کنار برنامه، سایر موارد چاپ شده بر روی نوار، داده-ها/مولفه ها/اعداد ورودی (معمولاً در سمت راست برنامه)، و در نهایت داده ها/اعداد خروجی (معمولاً در سمت راست هر دوی آن ها، یا آمیخته با ورودی ها، یا جایگزین آن ها) خواهند بود. "کاربر" باید ابتدای ماشین تورینگ را بالاتر از اولین فرمان قرار دهد، و ورودی ها باید در یک محل خاص و قالبی مناسب هم برای برنامهٔ روی نوار و هم برای فهرست فرمان های ماشین حالت محدود جای دهد.RASP از این فرمان تقلید می کند: "برنامه" و "داده هاً را درون حفره ها (رجیسترها) جای می دهد. اما برخلاف UTM، RSAP اقدام به "واکشی" فرمان هایش به صورت ترتیبی می کند، مگر اینکه آزمون شرطی آن ها را به جای دیگری ارسال نماید.نکتهٔ تردید دو مجموعه فرمان: مدل RASP، بر خلاف UTM، دارای دو مجموعه فرمان است؛ فهرست فرمان های حالت ماشین ("مفسر") و "برنامه" درون حفره ها.
نمونه برنامهٔ زیر مقادیر رجیستر (حفره) #۱۸ را به رجیستر (حفره) #۱۹ انتقال داده و مقادیر #۱۸ را در این فرایند پاک خواهد نمود.
5: 03 18 15 JZ 18,15 ; if is zero, jump to 15 to end the program 02 18 DEC 18 ; Decrement 01 19 INC 19 ; Increment 03 19 05 JZ 15, 5 ; If is zero, jump to 5 to repeat the loop (use Halt to simulate unconditional jump) 15: 00 H ; Halt18: n ; Source value to copy 19: ; Destination for copyفرمان های برنامه ای موجود در این ماشین RASP، مجموعه ای ساده جهت خلاصه سازی این مثال خواهند بود: