در این مطلب، ویدئو ApplePy: یک شبیه ساز Apple ][ در پایتون را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,060 –> 00:00:03,720
سلام خیلی ممنون از همه شما
2
00:00:03,720 –> 00:00:05,700
دسته توییتر من j table است یا اگر می خواهید
3
00:00:05,700 –> 00:00:07,440
من را در آنجا دنبال کنید، بنابراین من قصد دارم
4
00:00:07,440 –> 00:00:09,150
در مورد پروژه هایمان صحبت کنم که
5
00:00:09,150 –> 00:00:10,320
مدتی است روی آنها کار کرده ام
6
00:00:10,320 –> 00:00:14,280
apple-pie شبیه ساز Apple 2
7
00:00:14,280 –> 00:00:17,789
در پایتون با توجه به صحبتهایی که
8
00:00:17,789 –> 00:00:20,160
قرار است بعد از این ارائه شود، این سخنرانی
9
00:00:20,160 –> 00:00:24,420
میتواند عنوان قسمتی برای 6502 جدید داشته باشد،
10
00:00:24,420 –> 00:00:25,619
دلیل آن واضحتر خواهد شد اگر
11
00:00:25,619 –> 00:00:27,840
در بحث بعدی، اما فقط به
12
00:00:27,840 –> 00:00:30,590
عقب برگردیم، حتی اگر
13
00:00:30,590 –> 00:00:33,780
قبلاً رایانههایی داشتم. اپل 2 اپل
14
00:00:33,780 –> 00:00:35,160
2 واقعاً همان چیزی بود که من دندان هایم را در آن فرو کردم
15
00:00:35,160 –> 00:00:36,989
این تصویری است از من
16
00:00:36,989 –> 00:00:39,180
یک اپل 2 واقعی نداشتم من
17
00:00:39,180 –> 00:00:42,420
در اوایل دهه 80 یک کلون از یک اپل 2 داشتم که
18
00:00:42,420 –> 00:00:47,579
همه چیز بود و بنابراین این یک
19
00:00:47,579 –> 00:00:51,239
کامپیوتر با فناوری میکرو بود، زمانی که من حدوداً 10 ساله بودم،
20
00:00:51,239 –> 00:00:53,370
شما میتوانید
21
00:00:53,370 –> 00:00:55,110
درایو فلاپی پنج و ربع و چاپگر ماتریس نقطهای
22
00:00:55,110 –> 00:00:57,120
و همه اینها جوی استیکی است
23
00:00:57,120 –> 00:00:58,949
که چیزهای سرگرمکنندهای است، اما
24
00:00:58,949 –> 00:01:00,780
بازگشت به عقب کمی تاریخچه را در اختیار شما قرار میدهد.
25
00:01:00,780 –> 00:01:02,640
اپل 2 اولین اپل 2 در
26
00:01:02,640 –> 00:01:06,810
سال 1977 عرضه شد و CPU 6 بود 502 با سرعت یک
27
00:01:06,810 –> 00:01:10,439
مگاهرتز با اعداد صحیح پایه همراه بود،
28
00:01:10,439 –> 00:01:12,570
بنابراین در حالت اولیه اصلاً عملیات ممیز شناور وجود نداشت،
29
00:01:12,570 –> 00:01:14,790
با رم 4k استاندارد ارائه شد،
30
00:01:14,790 –> 00:01:18,630
اما میتوانید تا 48
31
00:01:18,630 –> 00:01:22,310
K بگیرید و اگر در سال 79 کمی اضافی پرداخت
32
00:01:22,310 –> 00:01:25,500
کنید، اپل 2 plus
33
00:01:25,500 –> 00:01:28,890
با استاندارد 48 K عرضه شد و با
34
00:01:28,890 –> 00:01:30,930
پایه نرم افزاری اپل از مایکروسافت
35
00:01:30,930 –> 00:01:32,970
همراه شد که شامل عملیات ممیز شناور بود و
36
00:01:32,970 –> 00:01:35,909
سپس در سال 1983 اپل 2e عرضه شد
37
00:01:35,909 –> 00:01:38,850
که استاندارد رم 64 K داشت و
38
00:01:38,850 –> 00:01:42,320
برای اولین بار حروف کوچک را شامل می شد.
39
00:01:42,320 –> 00:01:45,259
اکنون اپل 2 اصلی چندین
40
00:01:45,259 –> 00:01:47,280
نوآوری داشت، واقعاً
41
00:01:47,280 –> 00:01:48,810
از نظر سخت افزاری بسیار نوآورانه بود.
42
00:01:48,810 –> 00:01:50,340
43
00:01:50,340 –> 00:01:52,200
44
00:01:52,200 –> 00:01:54,000
45
00:01:54,000 –> 00:01:57,020
نمونههایی از
46
00:01:57,020 –> 00:02:00,680
cpu 6502 فقط در هر چرخه دیگر حافظه را میخواند،
47
00:02:00,680 –> 00:02:02,969
به این معنی که چیزی مانند
48
00:02:02,969 –> 00:02:08,209
سختافزار نمایشگر میتواند رم اصلی را
49
00:02:08,209 –> 00:02:11,190
در چرخه دیگر بخواند، بنابراین نیازی به
50
00:02:11,190 –> 00:02:13,170
یک رم ویدیویی جداگانه نیست و استیو وزنیاک
51
00:02:13,170 –> 00:02:13,800
52
00:02:13,800 –> 00:02:15,690
از این واقعیت استفاده کرد. مایل بود
53
00:02:15,690 –> 00:02:19,140
تعداد تراشهها را کاهش دهد، بنابراین فقط
54
00:02:19,140 –> 00:02:22,320
از رم استاندارد برای ویدیو استفاده کرد،
55
00:02:22,320 –> 00:02:27,690
نمونهای از درایوهای دیسک دیگر در آن زمان، اگر
56
00:02:27,690 –> 00:02:29,400
میدانستید در کارهایی که
57
00:02:29,400 –> 00:02:32,370
میتوانید به آنها بگویید انجام دهند، سیگنالی وجود دارد که
58
00:02:32,370 –> 00:02:35,640
میتوانید آنها را برای ردیابی ارسال کنید. 0 اما
59
00:02:35,640 –> 00:02:37,380
استیو وزنیاک متوجه شد که
60
00:02:37,380 –> 00:02:40,260
اگر فقط
61
00:02:40,260 –> 00:02:42,120
عملکرد ما را حذف کند می تواند تعداد تراشه های لازم را کاهش دهد و به
62
00:02:42,120 –> 00:02:44,730
جای دستور رفتن به مسیر 0،
63
00:02:44,730 –> 00:02:48,240
به خوبی متوجه شد که دیسک به طور متوسط 35 تراک دارد، بن
64
00:02:48,240 –> 00:02:51,600
براین اگر فقط هد را 40 تراک حرکت ده
65
00:02:51,600 –> 00:02:54,840
. پس از آن، ما تضمین میکنیم که در
66
00:02:54,840 –> 00:02:57,810
نهایت آهنگ 0 را بزنیم و صدا را از دست بدهیم،
67
00:02:57,810 –> 00:03:01,050
پس این هنوز وجود دارد و به همین دلیل است
68
00:03:01,050 –> 00:03:03,290
که وقتی یک سیب را راهاندازی میکنید –
69
00:03:03,290 –> 00:03:05,580
صدایی از راهب ایجاد میکند که در واقع
70
00:03:05,580 –> 00:03:09,840
سر درایو به یک درپوش لاستیکی برخورد میکند،
71
00:03:09,840 –> 00:03:13,020
اما اینجوری
72
00:03:13,020 –> 00:03:15,060
کل رویکرد استیو وزنیاک را خلاصه می کند که چرا
73
00:03:15,060 –> 00:03:16,260
آنچه را که می توانید در نرم افزار انجام دهید در سخت افزار پیاده سازی کنید
74
00:03:16,260 –> 00:03:18,480
و این کار را
75
00:03:18,480 –> 00:03:23,070
برای من در تلاش برای ساختن یک شبیه ساز بسیار دشوار کرد، بنابراین
76
00:03:23,070 –> 00:03:24,720
از نظر پای سیب، من در واقع
77
00:03:24,720 –> 00:03:28,440
این پروژه را در ابتدا شروع کردم. در سال 2001 در آن
78
00:03:28,440 –> 00:03:30,570
زمان در SourceForge بود و من
79
00:03:30,570 –> 00:03:33,060
مقدار مناسبی از CPU را پیادهسازی
80
00:03:33,060 –> 00:03:35,550
کردم، رام را در یک نقطه خاص بوت کردم،
81
00:03:35,550 –> 00:03:37,800
اما میتوانستید اعلان اولیه عدد صحیح را ببینید،
82
00:03:37,800 –> 00:03:40,230
اما اگر
83
00:03:40,230 –> 00:03:41,520
دستورات را تایپ کنید، خطا میکند و من
84
00:03:41,520 –> 00:03:42,959
واقعاً هرگز دقیقاً متوجه
85
00:03:42,959 –> 00:03:44,489
شدم مشکل چیست،
86
00:03:44,489 –> 00:03:49,080
اشکال زدایی شبیه سازی یک CPU بسیار دشوار است، من
87
00:03:49,080 –> 00:03:51,450
برای مدتی آن را لمس نکردم در فوریه 2007،
88
00:03:51,450 –> 00:03:52,890
فکر کردم دوباره آن را انجام دهم و آن را
89
00:03:52,890 –> 00:03:54,450
در کد گوگل قرار دادم، زیرا این همه خشم بود.
90
00:03:54,450 –> 00:03:57,180
سپس یک Refactor عظیم از کد 6502
91
00:03:57,180 –> 00:03:58,830
انجام داد اما واقعاً از نظر عملکرد خیلی بیشتر
92
00:03:58,830 –> 00:04:01,110
نشد و سپس در
93
00:04:01,110 –> 00:04:04,350
سال 2011 تصمیم گرفتم دوباره به آن برگردم
94
00:04:04,350 –> 00:04:08,760
آن را در github توییت کردم و در عرض
95
00:04:08,760 –> 00:04:12,209
چند ساعت وصلههایی داشت و این واقعاً
96
00:04:12,209 –> 00:04:13,410
چیزی میگوید. من به این فکر میکنم که
97
00:04:13,410 –> 00:04:15,840
در طی ده سال چقدر متنباز تغییر کرده است،
98
00:04:15,840 –> 00:04:16,850
من حتی یک نفر دیگر
99
00:04:16,850 –> 00:04:19,200
علاقهای به کمک به
100
00:04:19,200 –> 00:04:19,829
مشارکت نداشتم
101
00:04:19,829 –> 00:04:22,680
و آن را در github قرار دادم و یک توییت ارسال
102
00:04:22,680 –> 00:04:24,510
میکردم و در حال حاضر در عرض چند ساعت مشارکتکننده میگیرم،
103
00:04:24,510 –> 00:04:27,510
بنابراین Greg
104
00:04:27,510 –> 00:04:29,340
Google افراد روی آن،
105
00:04:29,340 –> 00:04:30,780
اولین دسته از پچ ها فرستاده شد و من با
106
00:04:30,780 –> 00:04:33,480
او روی یک سری چیزها کار
107
00:04:33,480 –> 00:04:35,790
کردم، پشتیبانی از CPU را به پایان رساندم، گرافیک و صداهایی با وضوح پایین و بالا اضافه کردم
108
00:04:35,790 –> 00:04:37,620
و با
109
00:04:37,620 –> 00:04:39,240
گرگ روی کاست و موارد دیگر
110
00:04:39,240 –> 00:04:41,580
کار کردم، بنابراین اگر قدمی برداریم برگردید و به این
111
00:04:41,580 –> 00:04:43,830
فکر کنید که شبیه سازی چگونه کار می کند تصور کنید
112
00:04:43,830 –> 00:04:46,140
که شما یک بازی کامپیوتری را به صورت
113
00:04:46,140 –> 00:04:48,390
اولیه نوشته اید که می خواهید
114
00:04:48,390 –> 00:04:51,930
انجام دهید یک کاری که می توانید انجام دهید این است که
115
00:04:51,930 –> 00:04:53,490
کاربر را فریب دهید تا فکر کند
116
00:04:53,490 –> 00:04:56,460
بازی اصلی را فقط با داشتن
117
00:04:56,460 –> 00:04:58,800
ورودی یکسان انجام می دهد. /خواص خروجی درست است،
118
00:04:58,800 –> 00:05:00,270
فقط میتوانید برنامه را بازنویسی کنید
119
00:05:00,270 –> 00:05:02,700
و تا زمانی که به نظر میرسد و
120
00:05:02,700 –> 00:05:04,230
شبیه برنامه اصلی است، میتوانید کاربر را فریب دهید
121
00:05:04,230 –> 00:05:06,450
، اما تصور کنید که
122
00:05:06,450 –> 00:05:08,550
واقعاً میخواهید از برنامه اصلی
123
00:05:08,550 –> 00:05:10,020
نوشته شده به خوبی استفاده کنید تا این کار را انجام دهید.
124
00:05:10,020 –> 00:05:12,180
باید مفسر اصلی را جعل کنید که
125
00:05:12,180 –> 00:05:13,470
مفسر اصلی خود را می نویسید
126
00:05:13,470 –> 00:05:14,700
و سپس می
127
00:05:14,700 –> 00:05:17,370
توانید از کد منبع اصلی بازی استفاده کنید
128
00:05:17,370 –> 00:05:20,850
اما بگویید می خواهید از مفسر اصلی واقعی استفاده مجدد کنید
129
00:05:20,850 –> 00:05:22,710
که A pple 2 خوب آمد،
130
00:05:22,710 –> 00:05:24,330
پس باید روتینهای رام سطح پایینتر را جعل کنید،
131
00:05:24,330 –> 00:05:27,750
اما
132
00:05:27,750 –> 00:05:29,160
اگر واقعاً میخواهید از یک رام واقعی Apple 2
133
00:05:29,160 –> 00:05:31,830
استفاده کنید، باید 6502 را تقلبی کنید و
134
00:05:31,830 –> 00:05:34,110
میتوانید ادامه دهید، میتوانید تصور کنید که
135
00:05:34,110 –> 00:05:35,910
واقعاً از رام اپل 2 استفاده میکنید. طرح گیت منطقی
136
00:05:35,910 –> 00:05:39,210
واقعی 6502 و وصل کردن آن
137
00:05:39,210 –> 00:05:41,160
به گیت های منطقی شبیه سازی شده یا حتی
138
00:05:41,160 –> 00:05:44,100
پایین آمدن بیشتر به دو ترانزیستور،
139
00:05:44,100 –> 00:05:45,960
در واقع شبیه سازی سطح ترانزیستور انجام می شود
140
00:05:45,960 –> 00:05:48,360
در واقع نحوه انجام شرکت
141
00:05:48,360 –> 00:05:50,130
هایی مانند اینتل و AMD است که
142
00:05:50,130 –> 00:05:52,200
مرد تست تراشه خود از اینتل به من گفت:
143
00:05:52,200 –> 00:05:53,940
چند هفته پیش که آنها در
144
00:05:53,940 –> 00:05:56,370
واقع میدانستید که بوت ویندوز را در یک
145
00:05:56,370 –> 00:05:59,940
شبیهسازی سطح ترانزیستوری از پردازندههایشان انجام میدهند،
146
00:05:59,940 –> 00:06:02,160
درست در فضای شش اوه پنج شش پنج اوه
147
00:06:02,160 –> 00:06:04,200
دو، در واقع
148
00:06:04,200 –> 00:06:06,450
شبیهسازیهای سطح ترانزیستور از 6502 وجود دارد که
149
00:06:06,450 –> 00:06:08,100
چیزی به نام visual 6502 وجود دارد
150
00:06:08,100 –> 00:06:10,530
که شما می توانید به آن بروید و در واقع در
151
00:06:10,530 –> 00:06:12,240
جاوا اسکریپت شبیه سازی سطح ترانزیستور را انجام می دهد
152
00:06:12,240 –> 00:06:14,490
که این چیزی نیست که من انجام
153
00:06:14,490 –> 00:06:17,820
می دهم.
154
00:06:17,820 –> 00:06:19,740
155
00:06:19,740 –> 00:06:21,990
همانطور که تصور می کنید
156
00:06:21,990 –> 00:06:23,790
رام اپل 2 فکر می کند که روی یک
157
00:06:23,790 –> 00:06:26,400
اپل واقعی اجرا می شود، برنامه های اصلی شما فکر
158
00:06:26,400 –> 00:06:29,190
می کنند که روی یک اپل 2 واقعی اجرا می شوند، بنابراین برای
159
00:06:29,190 –> 00:06:32,280
اینکه یک دید کلی از خود 6502 داشته باشید
160
00:06:32,280 –> 00:06:33,780
زیرا این واقعاً هسته
161
00:06:33,780 –> 00:06:37,470
اصلی اجرای این است. شبیه ساز 6502
162
00:06:37,470 –> 00:06:41,080
دارای 3500 ترانزیستور بود
163
00:06:41,080 –> 00:06:42,789
فقط برای این که این
164
00:06:42,789 –> 00:06:44,289
لپ تاپ در اینجا حدود یک
165
00:06:44,289 –> 00:06:48,220
میلیارد داشته باشد فقط سه و نیم هزار
166
00:06:48,220 –> 00:06:51,849
ترانزیستور در داده های 6502 8 بیتی بود،
167
00:06:51,849 –> 00:06:53,979
بنابراین شما در اصل فقط
168
00:06:53,979 –> 00:06:57,550
اعداد 0 تا 255 را دستکاری می کردید و
169
00:06:57,550 –> 00:07:00,330
می توانستید آنها را امضا کنید و همچنین
170
00:07:00,330 –> 00:07:02,560
آدرسها 16 بیتی بودند، بنابراین
171
00:07:02,560 –> 00:07:05,830
میتوانید تا 64 کیلو رم را بدون انجام
172
00:07:05,830 –> 00:07:09,250
هیچ گونه تغییر بانکی آدرسدهی کنید، ثبتهای
173
00:07:09,250 –> 00:07:11,259
عمومی رایگان و
174
00:07:11,259 –> 00:07:13,750
رایگان داشتید، بنابراین بله، همه ما در
175
00:07:13,750 –> 00:07:15,400
این دنیای شگفتانگیز Python که در آن جای داریم، خراب شدهایم.
176
00:07:15,400 –> 00:07:17,379
میتوانید تعداد نامحدودی متغیر داشته
177
00:07:17,379 –> 00:07:18,580
باشید و اگر مستقیماً برای 6502 برنامهنویسی میکنید، تمام این ساختارهای داده فوقالعاده
178
00:07:18,580 –> 00:07:20,379
را دارید،
179
00:07:20,379 –> 00:07:23,159
180
00:07:23,159 –> 00:07:25,719
سه متغیر به طور موثر سه متغیر دارید که
181
00:07:25,719 –> 00:07:28,780
جهانی هستند و فقط میتوانند حاوی
182
00:07:28,780 –> 00:07:35,379
n باشند. umbers 0 تا 255 شما یک پشته دارید اما
183
00:07:35,379 –> 00:07:39,219
فقط می تواند 250 از 6 عمق داشته باشد و فقط می تواند
184
00:07:39,219 –> 00:07:41,919
شامل اعداد 8 بیتی باشد و البته
185
00:07:41,919 –> 00:07:43,569
شما حافظه دارید بنابراین می
186
00:07:43,569 –> 00:07:50,110
توانید آن را به عنوان یک آرایه 65536 آیتم ببینید
187
00:07:50,110 –> 00:07:52,779
اما جهانی است و شما فقط می تواند شامل
188
00:07:52,779 –> 00:07:57,370
اعداد 8 بیتی باشد که 3 رجیستر عمومی
189
00:07:57,370 –> 00:07:59,199
شامل انباشته کننده و دو رجیستر شاخص هستند
190
00:07:59,199 –> 00:08:00,550
، در یک لحظه خواهیم دید که چرا
191
00:08:00,550 –> 00:08:02,199
آنها را ثبات های شاخص می نامند، اگر
192
00:08:02,199 –> 00:08:03,759
با آنها آشنا نیستید،
193
00:08:03,759 –> 00:08:06,400
رجیسترهای هدف ویژه شامل
194
00:08:06,400 –> 00:08:08,770
ثبت وضعیت، نشانگر پشته هستند. برای ضبط
195
00:08:08,770 –> 00:08:10,990
جایی که در پشته قرار دارید و چیزی
196
00:08:10,990 –> 00:08:12,310
به نام شمارنده برنامه که
197
00:08:12,310 –> 00:08:15,759
تنها ثبات 16 بیتی است که
198
00:08:15,759 –> 00:08:18,219
شمارنده برنامه به شما می گوید در حال
199
00:08:18,219 –> 00:08:20,860
حاضر کد را از کجا در حافظه اجرا می کنید و سپس
200
00:08:20,860 –> 00:08:23,490
در بالای آن حدود 60 دستور
201
00:08:23,490 –> 00:08:25,599
عمدتاً برای انجام دادن فقط با انتقال
202
00:08:25,599 –> 00:08:29,529
چیزها بین انباشتهکنندهها یا یا عقب
203
00:08:29,529 –> 00:08:31,180
و جلو کردن از حافظه ممکن است انجام برخی
204
00:08:31,180 –> 00:08:33,880
دستکاریهای منطقی و غیره باشد.
205
00:08:33,880 –> 00:08:35,979
206
00:08:35,979 –> 00:08:37,630
207
00:08:37,630 –> 00:08:40,570
ise در حال
208
00:08:40,570 –> 00:08:43,719
جمع و تفریق است، بنابراین چگونه میتوانیم
209
00:08:43,719 –> 00:08:45,420
چیزی شبیه به این را پیادهسازی کنیم
210
00:08:45,420 –> 00:08:48,279
، راه بدیهی این است که با
211
00:08:48,279 –> 00:08:51,490
کلاسی مانند CPU شروع کنیم و میتوانیم برخی
212
00:08:51,490 –> 00:08:53,020
ویژگیها را روی آن داشته باشیم مانند انباشتهکننده
213
00:08:53,020 –> 00:08:54,230
و شاخص X
214
00:08:54,230 –> 00:08:56,720
و این دقیقاً همان چیزی است که
215
00:08:56,720 –> 00:09:00,470
apple- pie انجام می دهد و سپس ما عملیات های مختلف را تنظیم می کنیم
216
00:09:00,470 –> 00:09:02,360
، دستورات مختلفی
217
00:09:02,360 –> 00:09:04,280
که می توانند اجرا شوند، اساساً آنها را
218
00:09:04,280 –> 00:09:09,560
در یک آرایه لیستی از 256 اسلات در آن قرار
219
00:09:09,560 –> 00:09:14,270
می دهیم که اساساً کد عملیاتی مانند 8 a
220
00:09:14,270 –> 00:09:17,840
در نقشه های هگز را به یک دستور خاص در
221
00:09:17,840 –> 00:09:20,450
این مورد نگاشت می کنیم. چیزی به نام TX a
222
00:09:20,450 –> 00:09:22,400
که هر مقدار شاخص X
223
00:09:22,400 –> 00:09:25,730
را به انباشتگر منتقل می کند و
224
00:09:25,730 –> 00:09:27,140
این روشی در جای
225
00:09:27,140 –> 00:09:31,040
دیگری در CPU ما خواهد بود و این تقریباً
226
00:09:31,040 –> 00:09:32,660
همان الگوی است که از آن پیروی می کند، پس تنها چیزی که ما
227
00:09:32,660 –> 00:09:36,680
نیاز داریم یک روش اجرا است که انجام می دهد. این است
228
00:09:36,680 –> 00:09:38,690
که اساساً به
229
00:09:38,690 –> 00:09:41,570
شمارنده برنامه نگاه می کند، یک بایت آن
230
00:09:41,570 –> 00:09:45,050
کد opcode را در لیست ops self dot ما
231
00:09:45,050 –> 00:09:46,970
که در اسلاید قبلی ایجاد کرده بودیم جستجو
232
00:09:46,970 –> 00:09:50,000
می کند و فقط آن را اجرا می کند که get pcs فقط یک
233
00:09:50,000 –> 00:09:52,640
روش کمکی است که برنامه را دریافت می کند. am counter و
234
00:09:52,640 –> 00:09:54,470
آن را یک عدد افزایش می دهد و سپس
235
00:09:54,470 –> 00:09:56,150
مقدار اصلی را برمی گرداند، بنابراین این در واقع به
236
00:09:56,150 –> 00:09:59,450
نوعی شبیه به ماشین مجازی پایتون است، Python
237
00:09:59,450 –> 00:10:01,460
VM یک حلقه بسیار مشابه دارد که
238
00:10:01,460 –> 00:10:03,920
اساساً روی کدهای عملیاتی حلقه می زند و
239
00:10:03,920 –> 00:10:06,080
بر اساس آن کدهای عملیاتی تصمیم می گیرد چه کاری انجام دهد
240
00:10:06,080 –> 00:10:07,760
و یک
241
00:10:07,760 –> 00:10:09,550
اسلاید بسیار مشابه با این وجود داشت اگر هر یک از شما دیدید که
242
00:10:09,550 –> 00:10:11,780
الکس گینر در مورد چگونگی نوشتن
243
00:10:11,780 –> 00:10:13,280
مفسر صحبت می کند، او در واقع اسلایدی داشت
244
00:10:13,280 –> 00:10:14,870
که بسیار شبیه به این حلقه زدن
245
00:10:14,870 –> 00:10:17,540
بر اساس شمارنده برنامه و در
246
00:10:17,540 –> 00:10:19,670
اجرای آن بود، بنابراین TX a خودش شبیه به چه چیزی است.
247
00:10:19,670 –> 00:10:21,680
این یک سادهسازی جزئی است
248
00:10:21,680 –> 00:10:23,840
که در یک لحظه واقعی را خواهید دید،
249
00:10:23,840 –> 00:10:25,580
اما ایده اصلی این است که شما
250
00:10:25,580 –> 00:10:27,920
انباشتهکننده را روی مقدار شاخص X تنظیم کنید،
251
00:10:27,920 –> 00:10:30,350
اکنون کمی
252
00:10:30,350 –> 00:10:32,780
پیچیدهتر از آن است زیرا
253
00:10:32,780 –> 00:10:36,110
برخی از عملیات وجود دارد که وضعیت را تغییر میدهد.
254
00:10:36,110 –> 00:10:39,020
ثبت وضعیت ثبت وضعیت یک
255
00:10:39,020 –> 00:10:41,030
رجیستر 8 بیتی است اما واقعاً می توان
256
00:10:41,030 –> 00:10:43,630
آن را به عنوان مجموعه ای از پرچم های بولی
257
00:10:43,630 –> 00:10:46,580
در نظر گرفت که یک پرچم حمل یک پرچم صفر و
258
00:10:46,580 –> 00:10:48,290
پرچم سرریز و یک پرچم علامت وجود دارد و اینها
259
00:10:48,290 –> 00:10:50,180
پس از قطعیت تغییر می کنند. در عملیات
260
00:10:50,180 –> 00:10:52,370
نشان میدهد که ما فقط یک عدد صفر دریافت کردهایم یا
261
00:10:52,370 –> 00:10:54,830
فقط یک عدد منفی دریافت کردهایم، بنابراین
262
00:10:54,830 –> 00:10:57,590
روش واقعی کار txa این است که به جای اینکه
263
00:10:57,590 –> 00:10:59,930
فقط شاخص X را به
264
00:10:59,930 –> 00:11:01,520
انباشته منتقل کنیم، آن را از طریق این
265
00:11:01,520 –> 00:11:04,310
بهروزرسانی NZ اجرا میکنیم تا مطمئن شویم که در
266
00:11:04,310 –> 00:11:07,850
محدوده است. از 0 تا 250
267
00:11:07,850 –> 00:11:09,500
پنج و خواهید دید که چرا این موضوع
268
00:11:09,500 –> 00:11:11,660
در یک لحظه مهم است و سپس این تست ها را انجام دهید که
269
00:11:11,660 –> 00:11:14,360
اگر صفر بود، پرچم صفر را تنظیم کنید اگر
270
00:11:14,360 –> 00:11:16,370
منفی بود به عبارت دیگر بیت بالا
271
00:11:16,370 –> 00:11:20,389
تنظیم شده بود، پرچم علامت را تنظیم می کنیم و
272
00:11:20,389 –> 00:11:21,920
این واقعاً ماهیت نحوه
273
00:11:21,920 –> 00:11:24,560
اجرای این 6502 است، فقط
274
00:11:24,560 –> 00:11:27,199
چند دستور دیگر برای نشان دادن دک ها و
275
00:11:27,199 –> 00:11:30,290
جوهرها یک کاهش شاخص X و
276
00:11:30,290 –> 00:11:32,509
افزایش شاخص X است و می توانید
277
00:11:32,509 –> 00:11:34,459
نحوه پیاده سازی آنها را در زیر مشاهده کنید،
278
00:11:34,459 –> 00:11:38,240
جایی که مدول دو است. پنج شش
279
00:11:38,240 –> 00:11:39,709
مهم است،
280
00:11:39,709 –> 00:11:42,290
زیرا اگر از
281
00:11:42,290 –> 00:11:46,310
محدوده یک بایت خارج شوید، تا کنون از محدوده افزایش و کاهش آن خارج شوید،
282
00:11:46,310 –> 00:11:48,319
عملیاتی که ما دیده ایم همه
283
00:11:48,319 –> 00:11:49,819
چیزهایی را
284
00:11:49,819 –> 00:11:53,089
285
00:11:53,089 –> 00:11:55,100
286
00:11:55,100 –> 00:11:58,459
دستکاری کرده اند. هفتم مفهوم
287
00:11:58,459 –> 00:12:01,430
حالتهای آدرسدهی است که روشهای واقعاً متفاوتی
288
00:12:01,430 –> 00:12:05,180
برای دریافت عملوند
289
00:12:05,180 –> 00:12:07,399
مورد نیاز شما برای عملیات خاص خود دارد، بنابراین
290
00:12:07,399 –> 00:12:09,829
فقط برای ارائه یک مرور سریع از برخی از
291
00:12:09,829 –> 00:12:11,509
این حالتها، اولین مورد از طریق
292
00:12:11,509 –> 00:12:13,639
علامت دلار چیزی است که مردم
293
00:12:13,639 –> 00:12:16,220
برای نشان دادن آن استفاده میکردند. به هر حال، چیزی در
294
00:12:16,220 –> 00:12:18,620
این دنیا به صورت هگزا بود، برخلاف 0xی
295
00:12:18,620 –> 00:12:20,810
که در جهان C در این دنیا می بینید،
296
00:12:20,810 –> 00:12:22,670
علامت دلار بود، بنابراین علامت دلار
297
00:12:22,670 –> 00:12:24,800
فقط به معنای هگزا است.
298
00:12:24,800 –> 00:12:27,920
299
00:12:27,920 –> 00:12:30,050
دومی می گوید
300
00:12:30,050 –> 00:12:31,970
هر چیزی را که در یک مکان حافظه ده است
301
00:12:31,970 –> 00:12:34,730
در انباشته بارگذاری کنید، سومی
302
00:12:34,730 –> 00:12:37,519
بارگذاری هر چیزی که در مکان حافظه است ده
303
00:12:37,519 –> 00:12:39,290
ده دلیل اینکه آنها در واقع دو
304
00:12:39,290 –> 00:12:42,880
حالت آدرس دهی متفاوت هستند
305
00:12:42,880 –> 00:12:45,980
256 بایت اول حافظه است که به اصطلاح صفحه صفر است.
306
00:12:45,980 –> 00:12:48,529
شما فقط به یک بایت نیاز دارید تا
307
00:12:48,529 –> 00:12:50,540
آدرس را در آنجا بیان کنید، بنابراین با
308
00:12:50,540 –> 00:12:53,089
دادن جداگانه در یک کد عملیاتی جداگانه می توانید
309
00:12:53,089 –> 00:12:55,310
یک بایت ذخیره کنید و بدانید که
310
00:12:55,310 –> 00:12:57,759
فقط یک بایت برای خواندن
311
00:12:57,759 –> 00:13:00,800
آدرس در کنار آن ده c دارید. omma X و
312
00:13:00,800 –> 00:13:04,430
ده کاما X به همین دلیل است که
313
00:13:04,430 –> 00:13:06,709
ثبات X گاهی اوقات شاخص X نامیده می شود
314
00:13:06,709 –> 00:13:10,930
زیرا آنچه می گویند بارگذاری از
315
00:13:10,930 –> 00:13:14,120
10 به علاوه X در حافظه X به عنوان یک
316
00:13:14,120 –> 00:13:16,160
شاخص در آرایه ای استفاده می شود
317
00:13:16,160 –> 00:13:18,319
که از 10 شروع می شود و شما می توانید همین کار را
318
00:13:18,319 –> 00:13:20,480
با y انجام دهید، دو مورد آخر به اصطلاح
319
00:13:20,480 –> 00:13:21,390
320
00:13:21,390 –> 00:13:23,820
حالت های آدرس دهی Inder هستند، از دوم به
321
00:13:23,820 –> 00:13:25,680
پایین، چیزی که اساساً می گوید این است که به
322
00:13:25,680 –> 00:13:29,459
1010 بروید X را اضافه کنید و هر چه در
323
00:13:29,459 –> 00:13:32,190
دو بایت بعدی از آن مکان وجود دارد، استفاده کنید، اگرچه از
324
00:13:32,190 –> 00:13:35,130
آن به عنوان مکان دریافت استفاده کنید. مقداری
325
00:13:35,130 –> 00:13:37,560
که میخواهید در انباشتهکننده
326
00:13:37,560 –> 00:13:39,329
قرار دهید، آخرینها کمی متفاوت هستند
327
00:13:39,329 –> 00:13:41,459
، قبل از اضافه کردن رجیستر ایندکس، این کار را غیرمستقیم انجام
328
00:13:41,459 –> 00:13:43,829
میدهد، که تقریباً از نظر
329
00:13:43,829 –> 00:13:46,620
حالتهای آدرسدهی که به
330
00:13:46,620 –> 00:13:48,870
هر حال برای Lda در دسترس هستند و نحوه
331
00:13:48,870 –> 00:13:51,390
پیادهسازی آنها به جای
332
00:13:51,390 –> 00:13:54,660
قرار دادن مستقیم یک مرجع متد در self
333
00:13:54,660 –> 00:13:57,839
dot ops کاری که در واقع انجام میدهیم این است که
334
00:13:57,839 –> 00:14:01,019
یک لامبدا را در self dot ops قرار میدهیم که اول از
335
00:14:01,019 –> 00:14:04,519
همه یکی از این روشهای حالت آدرسدهی را فراخوانی میکند
336
00:14:04,51