فرمت فایل : word(قابل ویرایش)
تعداد صفحات:44
چکیده:
Opcode : نشان دهنده ی عملیات دستورالعمل است.
Shift:نشان دهنده ی این است که دستورالعمل کدهای شرطی را تغییر می دهد.
Rd:رجسیتر مقصد را مشخص می کند.
Rn:رجسیتر عملگر صحیح را مشخص می کند.
بیت های [11:0]: بیت های shifter operand که بعداً توضیح داده می شود.
بیت 25: I بیت است که مشخص کننده ی حالت بین immediate shifter و register-base shifter operand است.
اگر بیت های نشان داده شده همه مقدارهای نشان داده شده را بگیرد دستورالعمل پردازش داده نیست بلکه در فضای دستورالعمل های لود و ذخیره یا محاسباتی قرار میگیرد.
1= ]7[ bit 0= ]4[ bit 0= ]25[ bit
1-2: shifter operand
یکی از سه فرمت زیر را دارد.
مقدار عملگر فوری:
مقداری است که توسط چرخش 8 بیت ثابت در 32 بیت word توسط یک عدد زوج (30، 000، 2،0) ایجاد می شود.
چند مقدار صحیح ثابت:
0FF* 0 ، 104 * 0، FF * 0
F000000F* 0 ، 00FF * 0
چند مقدار ناصحیح
، 102* 0، 101*0
برای مثال:
MOV R0#،
ADD R3, RB, #1
CMP R7, #10000
BIC Rq, R8, 0* FF 00
مقدار عملگر رجیستر: مقدار یک رجسیتر است.
به عنوان مثال
مقدار را به منتقل می کند و MOV
مقادیر و را جمع کرده و حاصل را در ذخیره می کند.
و و ADD
مقدار عملگر رجسیتر شیفت یافته:
مقدار یک رجیستر که پیش از عملگر پردازش داده شیفت(چرخش) یافته باشد.
5 نوع شیفت داریم:
ASR
Arithmetic shift right
LSR: logical shift left
LSR: logical shift right
ROR: Rotate right
RRX: Rotate right with entend
مقدار عددی که می خواهیم شیفت بدهیم می تواند یک عدد فوری یا یک رجیستر باشد.
مقدار R را به سمت چپ 2 بار شیفت 2# LSL، ، MOV
داده و در می ریزد ROR، ، MOV
که به مقدار شیفت داده شده است.
1-3 عملگرهای فوری پردازش داده
8-immed Rotate-imm Rd Rn S Opcode 001 Cond
مقدار shifter- operand تشکیل می شود با چرخش یک مقدار فوری 5 بیتی در موقعیت های بیت زوج در یک 32 بیتی. اگر مقدار عددی صفر باشد، مقدار خروجی shifter مقدار C می باشد. در غیر این صورت به مقدار بیت 31 shifter operand ست می شود.
<immediate> : برابر است با حاصل چرخش immed-8 با مقدار rotate-imm*2
عملیات:
shifter- operand = immed-8 rotate right (rotate-immed *2)
if rotate-imm=0 then
shifter- carry-out=c flay
else
shifter- carry-out= shifter- operand [31]
مقادیر فوری مجاز می باشند که تنها از چرخش یک 8 بیتی به یک مقدار زوج در 32 بیتی word حاصل می شوند.
Cncoding
بعضی مقادیر بیشتر از یک روش برای encoding دارند. مثلاً
E* 0= rotate-imm 3F* 0= 8-immd
F*0= rotate-imm FC*0= 8-immed
در چنین مواردی اسمبلر باید مقدار صحیح را طبق زیر انتخاب کند:
اگر مقدار فوری در بازه ی 0 تا FF* 0 قرار داشته باشد، encoding با rotate-imm=0 قابل دسترس است.