تالار گفتمان مانشت

نسخه‌ی کامل: کد میانی سه آدرسه
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام ، استراتژی حل این سوالات به چه صورت هست؟
از اولویت بالاتر شروع میکنیم و حاصل رو توی یک متغیر موقت میذاریم
تا اونجا که میشه سعی میکنیم از حداقل متغیرهای موقت استفاده کنیم.

[tex]a b((c d)\ast(k 1))[/tex]

[tex]T_1=c d[/tex]

[tex]T_2=k 1[/tex]

[tex]T_1=T_1\ast T_2[/tex]

[tex]T_1=b\ast T_1[/tex]

[tex]T_1=a\: T_1[/tex]

دو متغیر موقت استفاده شد پس به 2 حافظه موقت نیاز داریم.
(02 دى 1393 07:48 ب.ظ)Ametrine نوشته شده توسط: [ -> ]از اولویت بالاتر شروع میکنیم و حاصل رو توی یک متغیر موقت میذاریم
تا اونجا که میشه سعی میکنیم از حداقل متغیرهای موقت استفاده کنیم.

[tex]a b((c d)\ast(k 1))[/tex]

[tex]T_1=c d[/tex]

[tex]T_2=k 1[/tex]

[tex]T_1=T_1\ast T_2[/tex]

[tex]T_1=b\ast T_1[/tex]

[tex]T_1=a\: T_1[/tex]

دو متغیر موقت استفاده شد پس به ۲ حافظه موقت نیاز داریم.

یه سوالی ؟ چرا یک متغیر t2 دوباره تعریف کردید خوب دوباره می نوشتید [tex]T_1=T_1\ast K 1[/tex] مثل بقیه . آیا قانون خاص یا حدی در تعداد کاراکتر یا علامت در متغیر موقتی وجود دارد؟
(02 دى 1393 08:46 ب.ظ)joyebright نوشته شده توسط: [ -> ]یه سوالی ؟ چرا یک متغیر t2 دوباره تعریف کردید خوب دوباره می نوشتید [tex]T_1=T_1\ast K 1[/tex] مثل بقیه . آیا قانون خاص یا حدی در تعداد کاراکتر یا علامت در متغیر موقتی وجود دارد؟
چون از کد سه آدرسه استفاده میکنیم.
فقط آدرس 3تا متغیر رو میتونه بگیره.
(02 دى 1393 09:09 ب.ظ)Ametrine نوشته شده توسط: [ -> ]
(02 دى 1393 08:46 ب.ظ)joyebright نوشته شده توسط: [ -> ]یه سوالی ؟ چرا یک متغیر t2 دوباره تعریف کردید خوب دوباره می نوشتید [tex]T_1=T_1\ast K 1[/tex] مثل بقیه . آیا قانون خاص یا حدی در تعداد کاراکتر یا علامت در متغیر موقتی وجود دارد؟
چون از کد سه آدرسه استفاده میکنیم.
فقط آدرس ۳تا متغیر رو میتونه بگیره.

خوب تو متغیر t1 سومین خط شما مجموعا 4 تا متغیر دارید که ? لطف کنید این قسمتو توضیح بدید
(02 دى 1393 09:27 ب.ظ)joyebright نوشته شده توسط: [ -> ]خوب تو متغیر t1 سومین خط شما مجموعا ۴ تا متغیر دارید که ? لطف کنید این قسمتو توضیح بدید
منظورتون این هست؟ T1=T1∗T2
دوتا متغیر هست که!
c+d محاسبه میشه و مقدارش میره توی T1
k+1 هم محاسبه میشه و مقدارش میره تو T2
حالا T1 و T2 هم ضرب میشن و دوباره میریزیمش تو T1
(02 دى 1393 09:43 ب.ظ)Ametrine نوشته شده توسط: [ -> ]
(02 دى 1393 09:27 ب.ظ)joyebright نوشته شده توسط: [ -> ]خوب تو متغیر t1 سومین خط شما مجموعا ۴ تا متغیر دارید که ? لطف کنید این قسمتو توضیح بدید
منظورتون این هست؟ T1=T1∗T2
دوتا متغیر هست که!
c+d محاسبه میشه و مقدارش میره توی T1
k+1 هم محاسبه میشه و مقدارش میره تو T2
حالا T1 و T2 هم ضرب میشن و دوباره میریزیمش تو T1

مگه تو t1 , t2 مجموعاً 4 تا متغیر نیست؟
(02 دى 1393 10:35 ب.ظ)joyebright نوشته شده توسط: [ -> ]مگه تو t1 , t2 مجموعاً ۴ تا متغیر نیست؟
نه، سه تا هست.
به نظرم شما باید اول کد سه آدرسه رو مطالعه کنید.
ببینید کد سه آدرسه ، ۳ عملوند میگیره. حالا این عملوندها میتونن متغیر باشن یا عدد.
(که البته واضح هست که نمیشه سمت چپ رو عدد گذاشت چون حاصل باید بره تو یه متغیر نه یه عدد!)
ببینید توی هر دستور حداکثر 3 عملوند میتونیم داشته باشیم. تاکید میکنم توی هر دستور.
احتمالاً شما همه ی دستورات رو با هم حساب میکردید.

فکر کنم الان دیگه رفع ابهام شده باشه.
(03 دى 1393 11:17 ق.ظ)Ametrine نوشته شده توسط: [ -> ]ببینید توی هر دستور حداکثر ۳ عملوند میتونیم داشته باشیم. تاکید میکنم توی هر دستور.
احتمالاً شما همه ی دستورات رو با هم حساب میکردید.

فکر کنم الان دیگه رفع ابهام شده باشه.

یعنی شما هر موقع می نویسید t1=t2*2 اونموقع t1 هم خودش یه عملوند حساب میشه و دیگه به توی خود t1 , t2 نگاه نمی کنیم که چند تا عملوند دارن؟ درسته؟
(03 دى 1393 12:15 ب.ظ)joyebright نوشته شده توسط: [ -> ]یعنی شما هر موقع می نویسید t1=t2*2 اونموقع t1 هم خودش یه عملوند حساب میشه و دیگه به توی خود t1 , t2 نگاه نمی کنیم که چند تا عملوند دارن؟ درسته؟
آره دیگه. توش یه مقدار هست.
مثلاً c+d جمع دو عدد هست دیگه. با هم جمعشون میکنه مثلاً اگر c=2 و d=4 بوده حاصل که 6 باشه میره تو t1.
در کل اینجا برامون مهم نیست توشون چی هست.
لینک مرجع