Bayroqni ko'taring - Carry flag

Yilda kompyuter protsessorlari The bayroq ko'tarish (odatda C bayrog'i) bitta bit tizimda holat registri / qachon belgilash uchun ishlatiladigan bayroq registri arifmetik olib yurmoq yoki qarz mablag'lari hisobidan ishlab chiqarilgan eng muhim arifmetik mantiqiy birlik (ALU) bit holati. Ko'chirish bayrog'i bitta ALU kengligidan kattaroq raqamlarni ikkilik raqamni qisman qo'shish / olib tashlashdan ikkilik raqamni olib (qo'shib) qo'shish / olib tashlashga imkon beradi. kamida muhim bit muhimroq so'zning pozitsiyasi. Bundan tashqari, uni kengaytirish uchun ishlatiladi bit siljishlar va shunga o'xshash tarzda ko'plab protsessorlarda aylanadi (ba'zida maxsus dastur orqali amalga oshiriladi X bayroq). Chiqarish operatsiyalari uchun ikkita (qarama-qarshi) konvensiya qo'llaniladi, chunki ko'pchilik mashinalar yuk bayrog'ini qarzga o'rnatadi, ba'zi mashinalar (masalan, 6502 va PIC ) o'rniga transport bayrog'ini qarzga qaytaring (va aksincha).

Foydalanadi

Ko'chirish bayrog'iga aksariyat arifmetik (va odatda bir necha dono) ko'rsatmalar natijasi ta'sir qiladi va ularning ko'pchiligiga kirish sifatida ishlatiladi. Ushbu ko'rsatmalarning bir nechtasi yukni o'qiydigan yoki e'tiborsiz qoldiradigan ikkita shaklga ega. Yilda assambleya tillari ushbu ko'rsatmalar tomonidan ko'rsatilgan mnemonika kabi QO'ShISH / SUB, ADC / SBC (QO'ShISH / SUB shu jumladan olib yurish), SHL / SHR (bit siljishlar ), ROL / ROR (bit aylanadi), RCR / RCL (tashish orqali aylantirish) va boshqalar.[1] Ko'chirish bayrog'ini shu tarzda ishlatish ko'p sonliso'z operatsiyalarni qo'shish, olib tashlash, almashtirish va aylantirish.

Masalan, agar 255 va 255 dan foydalanib qo'shilsa, nima bo'ladi 8-bit registrlar. Natijada 9-bitli qiymat bo'lgan 510 bo'lishi kerak 111111110 ikkilik. Har doim registrda saqlanadigan kamida 8 ta muhim bit bo'ladi 11111110 ikkilik (254 kasr), lekin bit 7 (sakkiz bit) bajarilganligi sababli, natijada 9 bit kerakligini ko'rsatadigan ko'chirish o'rnatiladi. Amaldagi 9-bitli natija - bu ko'chirish bayrog'ini natija bilan birlashtirish.

8 bitli x86 ALU kattaligi uchun 8 bitli ikkitaning komplement talqini, qo'shilish operatsiyasi 11111111 + 11111111 natijalar 111111110, Ko'chirish_Flag o'rnatilgan, Sign_Flag o'rnatish va Overflow_Flag aniq.

Agar 11111111 ikkinchining komplektida imzolangan −1 butun sonini ifodalaydiQo'shish al, -1), keyin natijaning talqini bo'ladi 11111110 chunki Overflow_Flag aniq va Ko'chirish_Flag e'tiborga olinmaydi. Natija belgisi salbiy, chunki Sign_Flag o'rnatilgan. 11111110 of2 imzolangan tamsayı ikkalasining qo'shimcha shakli.

Agar 11111111 imzosiz butun sonli ikkilik raqamni ifodalaydi 255 (Qo'shish al, 255), keyin natijaning talqini Ko'chirish_Flag e'tiborsiz qoldirib bo'lmaydi. The Overflow_Flag va Sign_Flag e'tiborga olinmaydi.

Yana bir misol 8-bit bo'lishi mumkin ro'yxatdan o'tish bit naqsh bilan 01010101 va ko'tarish bayrog'i o'rnatilgan; agar biz bajarsak ko'chirish orqali chapga aylantiring ko'rsatma, natijada bo'ladi 10101011 eng muhim bit (7 bit) yuk tashishga aylantirilganda, yuk tashish bayrog'i tozalangan holda, yuk eng kichik bitga (bit 0) aylantirildi.

Dastlabki mikroprotsessorlar Intel 4004 va Intel 8008 o'rnatish bayrog'ini aniq o'rnatish va o'rnatish uchun aniq ko'rsatmalar mavjud edi. Biroq, keyinroq Intel 8080 (va Z80 ) ko'chirish opcodini asl holatini tiklashni o'z ichiga olmagan, chunki bu bit tezkor AND, OR yoki XOR ko'rsatmalaridan biri (ko'chirish bayrog'ini ishlatmaydigan) orqali teng darajada tez bajarilishi mumkin.

Ko'chirish bayrog'i ko'pincha taqqoslash ko'rsatmalariga asosan qo'llaniladi, odatda subtractiv operatsiyalar amalga oshiriladi, bu ikkala taqqoslangan qiymatning qaysi biri boshqasidan past (yoki kattaroq yoki teng) bo'lganligi to'g'risida qaror qabul qilishga imkon beradi. Ko'chirish bayrog'ini tekshiradigan filial ko'rsatmalari ko'pincha ko'rsatiladi mnemonika kabi BCC va BCS yuk ko'tarish aniq bo'lsa filialga yoki yuk ko'tarish mos ravishda o'rnatilgan bo'lsa filialga. Shu tarzda ishlatilganda ko'chirish bayrog'i qiymatlarni imzosiz tamsayılar bilan taqqoslash mexanizmini beradi. Bu farqli o'laroq to'lib toshgan bayroq bu qiymatlarni imzolangan tamsayı qiymatlari bilan taqqoslash mexanizmini taqdim etadi.

Vs. qarz bayrog'i

Ko'chirish bayrog'i qo'shish uchun yaxshi belgilangan bo'lsa-da, olib tashlash bayrog'ini olib tashlash operatsiyalari uchun ishlatishning keng tarqalgan ikki usuli mavjud.

Birinchisi bitni qarz bayrog'i sifatida ishlatadi, agar uni o'rnatsa a<b hisoblash paytida ab, va qarzni bajarish kerak. Agar ab, bit o'chirildi. A qarz bilan olib tashlang (SBB) ko'rsatma hisoblab chiqadi abC = a−(b+C), qarzsiz ayirish paytida (Sub) qarz biti aniq bo'lgandek harakat qiladi. The 8080, Z80, 8051, x86[1] va 68k oilalar (boshqalar qatori) qarz olishdan foydalanadi.

Ikkinchisi, shaxsiyatning afzalliklaridan foydalanadi -x = emas (x) +1 va hisoblaydi ab kabi a+ emas (b) +1. Ko'chirish bayrog'i ushbu qo'shimchaga muvofiq o'rnatiladi va tashish bilan olib tashlash hisoblash a+ emas (b)+C, olib yurish biti o'rnatilgandek tashishsiz olib tashlang. Natijada, agar olib o'tish biti o'rnatilsa abva agar aniq bo'lsa a<b. The Tizim / 360,[2] 6502, MSP430, ARM va PowerPC protsessorlar ushbu konvensiyadan foydalanadilar. 6502, ayniqsa taniqli misol, chunki u ayirmachiga ega emas holda transport operatsiyalari, shuning uchun dasturchilar yuk ko'tarish bayrog'ini qarz talab qilinmaydigan har bir olib tashlash operatsiyasidan oldin o'rnatilishini ta'minlashi kerak.

Tashish bayrog'ini olib tashlashda turli xil foydalanishlarining qisqacha mazmuni
Ko'tarish yoki
qarz olish
Olmasdan oling
olib borish / qarz olish
Chiqaring
qarz bilan
Chiqaring
tashish bilan
C = 0ab
= a + emas (b) + 1
ab0
= a + emas (b) + 1
a + emas (b) + 0
= ab1
C = 1ab1
= a + emas (b) + 0
a + emas (b) + 1
= ab0

Odatda, birinchi muqobil "qarz bilan olib tashlash" deb nomlanadi, ikkinchisi esa "ko'tarish bilan olib tashlash" deb nomlanadi. Biroq, har ikki yo'nalishda ham istisnolar mavjud; The VAX, NS320xx va Atmel AVR arxitekturalar qarz bit bitimidan foydalanadi, lekin ularni chaqiradi abC operatsiya "yuk bilan olib tashlash" (SBWC, SUBC va SBC). The PA-RISC va PICmicro arxitekturalar transport biti konventsiyasidan foydalanadi, lekin ularni chaqiradi a+ emas (b)+C "qarz bilan olib tashlash" operatsiyasi (SUBB va SUBWFB).

The ST6 / ST7 8-bitli mikrokontrollerlar, ehtimol, eng chalkash narsadir. Ularda har qanday "ko'tarish bilan olib tashlash" buyrug'i mavjud emasligiga qaramay, ular olib tashlash buyrug'i bilan o'rnatiladigan ko'chirish bitiga ega va konventsiya protsessor modeliga bog'liq. ST60 protsessori "ko'tarish" konventsiyasidan, ST62 va ST63 protsessorlari "qarz olish" konventsiyasidan foydalanadilar.[3]

Shuningdek qarang

Adabiyotlar

  1. ^ a b "Intel Architecture Software Developer qo'llanmasi, 2-jild: ko'rsatmalar to'plami uchun qo'llanma" (PDF). Olingan 2007-10-25.
  2. ^ IBM System / 360 ishlash tamoyillari (PDF). p. 28. IBM formasi A22-6821-0.
  3. ^ "ST6 oilaviy dasturlash bo'yicha qo'llanma" (PDF). Qayta ko'rib chiqish 2.0. STMikroelektronika. 2004 yil oktyabr. P. 42. Olingan 2017-02-28.

Tashqi havolalar