กลับไปหน้าบทความ

อ่าน 9 นาที

คำสั่งการจัดการบิต

คำสั่งการจัดการบิตคือคำสั่งที่ดำเนิน การ จัดการบิตในฮาร์ดแวร์ แทนที่จะต้องใช้คำสั่งหลายคำสั่งสำหรับการดำเนินการเหล่านั้นดังที่แสดงด้วยตัวอย่างในซอฟต์แวร์

คำสั่งการจัดการบิต

คำสั่งการจัดการบิตคือคำสั่งที่ดำเนิน การ จัดการบิตในฮาร์ดแวร์ แทนที่จะต้องใช้คำสั่งหลายคำสั่งสำหรับการดำเนินการเหล่านั้นดังที่แสดงด้วยตัวอย่างในซอฟต์แวร์ [ 1 ] สถาปัตยกรรมชั้นนำและสถาปัตยกรรมดั้งเดิมหลายแห่งมีคำสั่งการจัดการบิต ได้แก่ARM , WDC 65C02 , TX-2และPower ISA [ 2 ]

การจัดการบิตมักถูกแบ่งออกเป็นชุดย่อย เนื่องจากคำสั่งแต่ละคำสั่งอาจมีค่าใช้จ่ายสูงในการนำไปใช้ในฮาร์ดแวร์เมื่อแอปพลิเคชันเป้าหมายไม่มีเหตุผลรองรับ ในทางกลับกัน หากมีเหตุผลรองรับ ประสิทธิภาพอาจลดลงหากไม่รวมคำสั่งนั้น การวิเคราะห์ต้นทุนและผลประโยชน์เป็นงานที่ซับซ้อน ความพยายามที่ครอบคลุมที่สุดครั้งหนึ่งในการจัดการบิตคือความร่วมมือที่นำโดย Clare Wolfe ซึ่งให้เหตุผล กรณีการใช้งาน โค้ด C การพิสูจน์ และ Verilog สำหรับคำสั่ง RISC-V ที่เสนอแต่ละคำสั่ง[ 3 ] [ 4 ]

ตัวอย่างเชิงปฏิบัติที่สำคัญ ได้แก่การควบคุมบิตของGPIO โดยใช้ คอนโทรลเลอร์แบบฝังตัวราคาประหยัดเช่นWDC 65C02 , 8051และAtmel PICเนื่องจากความเร็วสัญญาณนาฬิกาของ CPU เหล่านี้ค่อนข้างต่ำ หากไม่มีฟังก์ชันการตั้งค่า/ล้าง/ทดสอบบิต CPU ราคาประหยัดเหล่านี้ก็จะไม่เร็วพอสำหรับแอปพลิเคชันเป้าหมาย

การจัดการบิตฮาร์ดแวร์

สถาปัตยกรรมทั้งหมดด้านล่างมีชุดคำสั่งย่อยและกลุ่มคำสั่งที่การจัดการบิตนั้นมีให้ในฮาร์ดแวร์ จากรายการจะเห็นได้ว่าDSPและไมโครคอนโทรลเลอร์แบบฝังตัว มีคำสั่งทดสอบ/ตั้งค่า/ล้างบิตอย่างน้อยที่สุด แต่ยังมีคำสั่งที่ครอบคลุมมากกว่านั้น เช่นการนับศูนย์นำหน้า , Popcount , การคำนวณ เลขคณิต ฟิลด์กาโลอิส , เลขฐานสิบแบบเข้ารหัสไบนารี , การคูณและการสลับเมทริกซ์บิต, การสลับไบต์, การสลับบิตรวมถึงการกลับบิต , คำสั่งการเข้ารหัสลับเฉพาะทาง และอื่นๆ อีกมากมาย

อินเทลและเอนด์ (x86)

  • ชุดคำสั่งหลักของสถาปัตยกรรม x86 ประกอบด้วย:
    • BSRBit Scan Reverse - ส่งคืนดัชนีบิตของบิตที่ตั้งค่าสูงสุดในอินพุต ซึ่งโดยพื้นฐานแล้วคือการนับเลขศูนย์นำหน้าแบบย้อนกลับ ไม่ได้กำหนดไว้สำหรับ 0
    • BSFBit Scan Forward - ส่งคืนดัชนีบิตของบิตที่ตั้งค่าต่ำที่สุดในอินพุต โดยหลักแล้วจะนับจำนวนศูนย์ต่อท้าย แต่ไม่ได้กำหนดไว้สำหรับ 0
  • SSE4และ ส่วนขยายชุดคำสั่ง BMIประกอบด้วยคำสั่งสำหรับ:
    • นับเลขศูนย์นำหน้า -lzcnt
    • นับจำนวนศูนย์ต่อท้าย -tzcnt
    • จำนวนประชากร -popcnt
    • การดึงบิต/การฝากบิต - pext/pdep
    • การทดสอบบิต - ptestโดยvptestรับอินพุตสองตัว ทำทั้งANDการดำเนินการ AND และANDNการดำเนินการระหว่างอินพุตทั้งสอง และตั้งค่าบิต ZF และ CF EFLAGS ตามผลลัพธ์ของการดำเนินการ AND และ ANDN ตามลำดับ ว่าเป็น 0 หรือไม่ สามารถใช้เพื่อทดสอบว่าบิตที่ถูกปิดบังทั้งหมดเป็นศูนย์ บิตที่ถูกปิดบังทั้งหมดถูกตั้งค่า หรือเป็นการผสมผสานกัน
  • ส่วนขยายไตรภาค AVX -512ประกอบด้วยคำสั่งตรรกะไตรภาคแบบบิตไวส์นอกจากvpternlogนี้ ยังมีคำสั่งตรวจจับความขัดแย้งที่น่าสนใจอีกด้วยVPCONFLICTD
  • นอกจากนี้ ในชุดย่อย AVX/ AVX-512 GFNIยังมีการแปลงเชิงเส้นของเมทริกซ์บิตและการแปลงผกผัน ซึ่งGF2P8AFFINEQBก็คือการคูณเมทริกซ์บิตขนาด 8x8 ในฟิลด์กาโลอิส GF(2^8) [ 5 ]
  • AVX-512 BITALG นอกจากเวอร์ชัน AVX-512 ของคำสั่งการจัดการบิตที่มีอยู่แล้ว ยังได้เพิ่มVPSHUFBITQMBคำสั่งสลับบิตระดับบิต ซึ่งเลือกบิตจากแหล่งหนึ่งโดยใช้ดัชนีในแหล่งที่สอง
  • คู่มือเทคโนโลยี Intel GNFI เกี่ยวกับส่วนขยาย AVX/AVX512 GNFI ยังระบุการใช้งานมากมาย รวมถึงการตั้งค่า/ล้าง/กลับบิตแบบขนานทีละไบต์ การขยายเครื่องหมาย 5 บิต และชี้ให้เห็นว่าศักยภาพนั้นมีมากกว่ามาก[ 6 ]
  • รหัสปฏิบัติการ BCD ของ Intel

พาวเวอร์ ไอเอ

Power ISAมีคำสั่งการจัดการบิตจำนวนมาก[ 7 ]ซึ่งส่วนใหญ่เป็นผลมาจากประวัติและความสัมพันธ์กับเมนเฟรมของ IBM และสถาปัตยกรรม z/

  • นับศูนย์นำหน้าและศูนย์ตามหลัง รวมถึงเวอร์ชันที่ถูกปิดบังไว้[ 8 ]มีการผสมผสานระหว่าง คำสั่ง popcount [ 8 ] parity [ 9 ]และ คำสั่งสไตล์ SWARแต่ไม่ใช่ชุดที่สมบูรณ์ของแต่ละแบบ: popcntbSWAR เป็นระดับไบต์ 8x8 บิต แต่ไม่มี 4x16 บิตpopcnthแต่มีpopcntwสเกลาร์ 2x32 บิตและ 64 บิต ในทำนอง popcntdเดียวกันprtywSWAR เป็นครึ่งเวิร์ด 4x16 บิต แต่ไม่มีprtyb
  • การสกัดบิตแบบมาสก์pextdและการฝากบิตpdepdเหล่านี้จะดรอปและกระจายบิตในตำแหน่งตามมาสก์แทนที่จะใช้เทคนิคปกติของการชดเชยและความยาว[ 10 ]คำสั่ง centrifuge ที่ผิดปกติซึ่งย้ายบิตแบบมาสก์ไปทางซ้ายและบิตแบบไม่มาสก์ไปทางขวา โดยรักษาลำดับสัมพัทธ์ไว้ในทั้งสองกรณี ISA ส่วนใหญ่จะมีตัวดำเนินการที่แสดงจำนวนบิตตามลำดับที่จะสกัด บวกกับความยาว: cfugedรวมสิ่งเหล่านี้เข้าเป็นบิตมาสก์อเนกประสงค์หนึ่งเดียว[ 10 ]
  • การสลับตำแหน่ง 8x8 บิตvgbbd[ 11 ]ซึ่งถือว่าปริมาณ 64 บิตเป็นเมทริกซ์ 2 มิติ 8x8 และดำเนินการสลับตำแหน่งเมทริกซ์ ดังนั้นบิต 0 ของแต่ละไบต์จึงกลายเป็นไบต์แรก บิต 1 ของแต่ละไบต์กลายเป็นไบต์ที่สอง และอื่นๆ
  • คำสั่งดัชนีที่แปลกแต่มีประโยชน์มาก ( bpermd) [ 12 ]ซึ่งอนุญาตให้เลือกบิตแต่ละบิตได้มากถึงแปดบิตจากแหล่งข้อมูล 64 บิต โดยถือว่าแต่ละไบต์ของรีจิสเตอร์ 64 บิตตัวที่สองเป็นดัชนีบิตในรีจิสเตอร์ตัวแรก
  • คำสั่งตรรกะแบบ ไตรภาค 8 บิต แบบบิต xxeval[ 13 ]คล้ายกับAVX-512
  • คำแนะนำเชิงกลยุทธ์สำหรับการเร่งBCD ที่บรรจุ[ 14 ]
  • Power v3.1 ยังได้เพิ่มคำสั่งการจัดการบิตเพิ่มเติมอีกหลายคำสั่ง รวมถึงการสลับลำดับของไบต์ภายในครึ่งเวิร์ด เวิร์ด และรีจิสเตอร์ 64 บิตทั้งหมด

ซูเปอร์คอมพิวเตอร์เครย์

Cray จดสิทธิบัตร BMM (Bit matrix multiply) ในปี 1990 ซึ่งสามารถรองรับตัวดำเนินการได้ถึง 64x64 บิต[ 15 ]สิ่งที่เทียบเท่าได้ใกล้เคียงที่สุดในปัจจุบันคือคำสั่ง Affine Transform GF(2) ขนาด 8x8 ของ AVX512

IBM System/360 ผ่าน z/Architecture

ระบบ IBM/360

ระบบIBM System/360มีคำสั่ง RR, RX และ SI สำหรับการดำเนินการ AND แบบบิต, การดำเนินการ OR แบบพิเศษ และการดำเนินการ OR, การดำเนินการ RS ทางคณิตศาสตร์ และการดำเนินการเลื่อนเชิงตรรกะ[ a ] , การทดสอบ SI ภายใต้มาสก์[ b ]และการทดสอบและการตั้งค่า RX แบบอะตอมิก คำสั่งเหล่านี้และส่วนขยายของคำสั่งเหล่านี้ยังคงใช้งานได้ผ่าน z/Architecture

ระบบ IBM/370

ในช่วงท้ายของ วงจรชีวิต S/370นั้น IBM ได้เปลี่ยนคำสั่งย้ายอักขระแบบย้อนกลับ ซึ่งเดิมเป็นคำสั่ง RPQ ให้เป็นคำสั่งมาตรฐาน

การดำเนินการเวกเตอร์ของ IBM S/370, S/370-XA, ESA/370 และ ESA/390

IBM 3090 ได้แนะนำ ฟังก์ชันเวกเตอร์เสริม[ 16 ]ให้กับ ชุดคำสั่ง System/370-XAและEnterprise Systems Architecture/370นอกเหนือจากการคำนวณเลขคณิตเวกเตอร์จำนวนเต็มและจุดลอยตัว และการดำเนินการเชิงตรรกะบนค่าจำนวนเต็มและจุดลอยตัวหลายค่าแล้ว ยังได้แนะนำการดำเนินการจัดการบิตเวกเตอร์ เช่นการนับศูนย์นำหน้าvczvmและ การ นับจำนวนประชากร[ 17 ]vcovm

อีเอสเอ/390

ในช่วงท้ายของ วงจรชีวิตของ ESA/390นั้น IBM ได้นำคำสั่ง z/Architecture บางส่วนมาใช้ใน ESA/390 ซึ่งรวมถึงคำสั่งหมุนซ้ายแบบลอจิกเดี่ยว โหลดแบบกลับด้าน และจัดเก็บแบบกลับด้าน

z/สถาปัตยกรรม สเกลาร์

z/Architectureได้รับสืบทอดคำสั่งการจัดการบิตทั้งหมดจากรุ่นก่อนหน้า และเพิ่มเวอร์ชันการเลื่อนตำแหน่งแบบ 64 บิต ( grande ) และแบบยาว (20 บิต) สำหรับบางคำสั่ง

  • สิ่งอำนวยความสะดวกส่วนขยายคำแนะนำทั่วไป[ 18 ]เพิ่ม
    • หมุนแล้วบิตที่เลือก[ 19 ]
    • หมุนบิตพิเศษหรือบิตที่เลือก[ 20 ]
    • หมุนแล้วแทรกบิตที่เลือก[ 20 ]
    • หมุนแล้วหรือเลือกบิต[ 20 ]
  • สิ่งอำนวยความสะดวกคำศัพท์ระดับสูง[ 21 ]เพิ่ม
    • หมุนแล้วแทรกบิตที่เลือกให้เป็นค่าสูง[ 22 ]
    • หมุนแล้วแทรกบิตที่เลือกไว้ต่ำ[ 22 ]
  • สิ่งอำนวยความสะดวกการเข้าถึงแบบเชื่อมโยง 1 [ 23 ]เพิ่ม
    • โหลดและและ (LAN, LANG) [ 24 ]
    • โหลดและเอกสิทธิ์เฉพาะหรือ (LAX, LAXG) [ 25 ]
    • โหลดและหรือ (LAO, LAOG) (LAX, LAXG) [ 26 ]
  • สิ่งอำนวยความสะดวกส่วนขยายคำแนะนำเบ็ดเตล็ด 1 [ 27 ]เพิ่ม
    • หมุนแล้วแทรกบิตที่เลือก (RISBGN) [ 28 ]
  • สิ่งอำนวยความสะดวกส่วนขยายคำแนะนำเบ็ดเตล็ด 3 เพิ่ม
    • และด้วยส่วนประกอบเพิ่มเติม (NCRK, NCGRK)
    • เคลื่อนจากขวาไปซ้าย
    • เอ็นแอนด์ (NNRK, NNGRK)
    • ไม่ใช่สิทธิ์เฉพาะ หรือ (NXRK, NXGRK)
    • นอร์ (NORK, NOGRK)
    • หรือพร้อมส่วนเติมเต็ม (OCRK, OCGRK)
    • เลือก (SELR, SELGR)
    • เลือกค่าสูง (SELFHR)
  • สิ่งอำนวยความสะดวกส่วนขยายคำแนะนำเบ็ดเตล็ด 4 [ 29 ]เพิ่ม
    • เงินฝากบิต (BDEPG) [ 30 ]
    • BIT EXTRACT (BEXTG) [ 31 ]
    • นับเลขศูนย์นำหน้า (CLZG)
    • นับเลขศูนย์ต่อท้าย (CTZG)

การดำเนินการเวกเตอร์ z/สถาปัตยกรรม

z/Architecture ไม่รองรับฟังก์ชันเวกเตอร์ก่อนหน้านี้[ 32 ]อย่างไรก็ตาม ตั้งแต่ฉบับที่ 11 ของหลักการทำงานของ z/Architecture [ 33 ] เป็นต้นไป จะรองรับคำสั่งต่อไปนี้:

  • นับ เวกเตอร์ ศูนย์นำหน้า vclzนับศูนย์ตามหลังvctz[ 34 ] [ 35 ]และนับประชากร เวกเตอร์ vpopct[ 36 ]
  • การทดสอบเวกเตอร์ภายใต้หน้ากากvtm[ 37 ] - กำหนดรหัสเงื่อนไขโดยอิงจากการเปรียบเทียบ องค์ประกอบ ทั้งหมดของรีจิสเตอร์หนึ่งกับเวกเตอร์ที่สองเป็นหน้ากาก: หากการเปรียบเทียบหน้ากากทั้งหมดเป็นศูนย์ทั้งหมด หากทั้งหมดเป็นหนึ่งทั้งหมดหรือผสมกันทั้งสองอย่าง
  • เวกเตอร์GF(2)คูณและคูณสะสม , vgfm, [ 38 ]เรียกว่าการคูณแบบไม่มีตัวทด
  • BCD ที่บรรจุอย่างครอบคลุม [ 39 ]
  • การทดสอบและการตั้งค่าตามหน่วยความจำและการดำเนินการบิตทดสอบ/ล้างแบบมาสก์ต่างๆ ซึ่งย้ายหรือคัดลอกบิตเดียวลงในรหัสเงื่อนไข[ 40 ]

ดีซี พีดีพี-10

DEC PDP-6และPDP-10มีการดำเนินการเชิงตรรกะที่ครอบคลุมชุด ฟังก์ชัน บูลีนตารางค้นหาฮาร์ดแวร์ (LUT2) 2 ตัวดำเนินการ ทั้งหมด [ 41 ] (แทนที่จะเป็นฟังก์ชัน 3 ตัวดำเนินการที่ AVX512 และ Power ISA มี)

รุ่นต่อมาของ PDP-10 มีคำสั่งในการแปลงระหว่างBCD แบบแพ็คและไบนารี[ 42 ]

นอกจากนี้ยังมีคำสั่งโหลดและจัดเก็บไบต์ที่ไม่ธรรมดา (ความยาวบิตแปรผัน) ที่ใช้ตัวชี้ไบต์สำหรับตัวดำเนินการหน่วยความจำ: ในศัพท์สมัยใหม่ คำสั่งเหล่านี้คือการแทรกและดึงข้อมูลบิตฟิลด์ นอกเหนือจากที่อยู่คำแล้ว ยังมีการระบุความยาวบิต (S) และออฟเซ็ตบิต (P) ของไบต์ที่จะโหลดหรือจัดเก็บ คำสั่งเหล่านี้สามารถระบุขนาดไบต์ได้ตั้งแต่ 0-36 แต่ไบต์ต้องไม่คร่อมขอบเขตคำ[ 43 ] คำสั่ง การจัดการสตริง[ 44 ]การแปลง BCD/ไบนารี[ 45 ]และการแก้ไขสตริง[ 46 ]ในรุ่นต่อมาใช้ตัวชี้ไบต์และมีข้อจำกัดเดียวกัน

GE-600 ซีรีส์

เครื่องคิดเลขซีรีส์ GE -600และรุ่นต่อมามีฟังก์ชันแปลงรหัสเกรย์เป็นรหัสไบนารี หากไม่มีคำสั่งดังกล่าวการแปลงรหัสเกรย์จะต้องใช้หลายขั้นตอน การแปลงรหัสไบนารีเป็นรหัสเกรย์นั้นง่ายx^(x>>1)และไม่จำเป็นต้องมีคำสั่งเฉพาะ การเข้ารหัสเกรย์มีประโยชน์ในทางปฏิบัติอย่าง มาก

แขน

  • ARM11มีการทดสอบแบบบิตไวส์ AND (การทดสอบแบบบิตมาสก์) และการทดสอบแบบ XOR การดำเนินการแบบบิตไวส์ เชิงตรรกะมาตรฐาน รวมถึง OR-complement การกลับบิตแบบครึ่งเวิร์ดไบต์ และการเลือก/รวมไบต์แบบมีเงื่อนไข การเลื่อนและการหมุนมีให้ใช้งานบน Operand2 [ 47 ]
  • ARM Cortex-A มีฟังก์ชันตั้งค่าฟิลด์บิต ล้าง แยก และกลับด้าน[ 48 ]
  • ARM A64 มี การสลับไบต์แบบครึ่งเวิร์ดสไตล์ SWARการแทรกและการแยกบิตฟิลด์ และการกลับบิต[ 49 ]

RISC-V

ในส่วนขยายมาตรฐาน RISC-V มีการดำเนินการบิต แบบสเกลาร์ รวมถึงการเลื่อนบิตและการเลื่อนบิตแบบเลขคณิต แต่ไม่มีการหมุนบิต การขาดหายไปนี้ได้รับการชดเชยด้วยส่วนขยายเพิ่มเติม

  • ส่วนขยาย RISC-V Zb* ประกอบด้วยคำสั่งการจัดการบิตจำนวนมาก[ 50 ]กลุ่มทั้งสี่กลุ่มถูกแบ่งออกเป็นหมวดหมู่ที่มีประโยชน์ (เช่น ชุดย่อยจำนวนเต็มมี min/max, rotate และpopcount ) และมีการวิจัยอย่างละเอียดถี่ถ้วนเกี่ยวกับเหตุผลในการรวมและการปรับปรุงที่คำสั่งเหล่านี้นำมา[ 51 ]
  • ส่วนขยายเวกเตอร์ RISC-V (RVV) มีคำสั่งที่จัดเป็นการจัดการบิตระดับฮาร์ดแวร์ แต่ใช้กับมาสก์เวกเตอร์แทนที่จะเป็นรีจิสเตอร์สเกลาร์ตามปกติ ตัวอย่างเช่นมีคำสั่ง Popcount ที่ใช้มาสก์เวกเตอร์ [ 52 ] RVV ยังมีการดำเนิน การบิตแบบต่อองค์ประกอบอีกด้วย[ 53 ]

ไมโครคอนโทรลเลอร์แบบฝังตัว

อินเทล

  • 8086 มี การ ดำเนินการแบบบิตด้วยเช่นกัน[ 54 ]TEST
  • 8051 มี คำ สั่งSETB , CLRและCPL- คำสั่งล้างและกลับบิต - และคำสั่งจำนวนมากของมันเป็นคำสั่งการจัดการบิต[ 55 ]นอกจากนี้ยังรวมถึง Or-complement และ And-complement ซึ่งมีอยู่ใน RISC-V Zb* [ 56 ]

ซิล็อก ซี80

  • ชุดคำสั่งZilog Z80 ประกอบด้วย คำสั่ง , , และคำสั่งเหล่านี้จะทดสอบ รีเซ็ต และตั้งค่าบิตแต่ละบิตในรีจิสเตอร์หรือหน่วยความจำที่ชี้โดย HL, IX หรือ IY [ 57 ]BITRESSET

MOS 6502

  • ชิปWDC 65C02เพิ่มฟังก์ชันการจัดการบิตได้แก่ การทดสอบและตั้งค่า (TSB) และการทดสอบและรีเซ็ต (TRB) บนบิตแต่ละบิต
  • Rockwell ได้เพิ่มส่วนขยายที่คล้ายกัน (RMB, SMB, BBR และ BBS) ให้กับซีรี่ส์ R65C00 [ 58 ]

ไมโครชิป PIC

คนอื่น

  • DSP ของ Texas Instrumentsเช่น ซีรี่ส์ TMS320C6000มีคำสั่งตั้งค่า ล้าง กลับค่า ทดสอบ แยก และแทรกบิต (หรือฟิลด์บิต) [ 59 ]
  • TX -2จากปี 1958 มีการคาดการณ์แบบ "ข้ามบิต"เช่นเดียวกับการตั้งค่า การล้าง การกลับบิต และการสลับบิต รวมถึงการเลื่อนและ การดำเนิน การบิตแบบ อื่นๆ [ 60 ] [ 61 ]
  • SuperHมีการจัดการบิตแบบอิงหน่วยความจำที่ครอบคลุม รวมถึง And-complement และ Or-complement แต่ยังมีการทดสอบ/ตั้งค่า/ล้างแบบอิงรีจิสเตอร์มาตรฐาน และคำสั่งที่ไม่ธรรมดาที่แทนที่บิต N (ในช่วง 0 ถึง 7) และคัดลอกบิตที่ถูกแทนที่ไปยังรีจิสเตอร์ทดสอบ[ 62 ]
  • Signetics 8X300 เป็นไมโครโปรเซสเซอร์ที่เปิดตัวในปี 1976 โดยปกติโปรเซสเซอร์นี้จะประมวลผลข้อมูลไบต์ขนาด 8 บิต แต่หน่วยมาสก์และหน่วยหมุนทำให้สามารถประมวลผลบิตเดียวหรือหลายบิต ได้ ทำให้โปรเซสเซอร์นี้เป็นโปรเซสเซอร์ที่มีความยาวข้อมูลแปรผันได้
  • สถาปัตยกรรม DEC PDP -11จากปี 1970 รองรับการทดสอบ การตั้งค่า และการล้างบิตทั้งในระดับเวิร์ดBITBISBICและไบต์ ส่วน WD16BITBBISBBICBที่คล้ายกันมากนั้นรองรับเฉพาะคำสั่งในรูปแบบเวิร์ดเท่านั้น นอกจากนี้WD16 ยังรองรับแฟล็กที่ระบุตำแหน่งไบต์ได้เร็วกว่าด้วย คำสั่ง และ(คำสั่งส่วนเติมเต็ม) แต่ PDP-11 ขาดคำสั่ง นี้BISBTSTBSETBCLRBCOMBSETB
  • ไมโครคอนโทรลเลอร์ Motorola 68000รองรับการทดสอบบิตและการจัดการหน่วยความจำหรือรีจิสเตอร์ข้อมูล หมายเลขบิตอาจเป็นค่าคงที่หรือค่าในรีจิสเตอร์ข้อมูล คำสั่งต่างๆ ได้แก่BSET(ตั้งค่าเป็น 1), BCLR(ล้างเป็น 0), BCHG(กลับค่า) และBTST(ไม่มีการเปลี่ยนแปลง) คำสั่งทั้งหมดนี้จะทดสอบบิตปลายทางก่อน และตั้งค่าบิต CCR Z หากบิตปลายทางเป็น 0

หมายเหตุ

  1. ^ไม่มีคำสั่งการหมุนใน S/360 , S/370หรือ ESA/ 370
  2. ^มาสก์โดยตรงมีขนาด 8 บิต

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • ฮิเลวิตซ์, เยดิดยา (2008). คำสั่งการจัดการบิตขั้นสูง: สถาปัตยกรรม การใช้งาน และการประยุกต์ใช้ (PDF) (วิทยานิพนธ์ปริญญาเอก). มหาวิทยาลัยพรินซ์ตัน .
    • Hilewitz, Yedidya; Lee, Ruby B. (พฤศจิกายน 2006). สถาปัตยกรรมชุดคำสั่งการจัดการบิตขั้นสูง รายงานทางเทคนิค CE-L2006-004ภาควิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยพรินซ์ตัน
  • Koppelmann, Bastian; Adelt, Peer; Mueller, Wolfgang; Scheytt, Christoph (2019). ส่วนขยาย RISC-V สำหรับคำสั่งการจัดการบิต 2019 การประชุมวิชาการนานาชาติครั้ง ที่ 29 ว่าด้วยการ สร้างแบบจำลอง การเพิ่มประสิทธิภาพ และการจำลองพลังงานและเวลา (PATMOS) IEEE หน้า  41–48 doi : 10.1109/PATMOS.2019.8862170 ISBN 978-1-7281-2103-1.
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Bit_manipulation_instructions&oldid=1325477189 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ คำสั่งการจัดการบิต

คำสั่งการจัดการบิตคือคำสั่งที่ดำเนิน การ จัดการบิตในฮาร์ดแวร์ แทนที่จะต้องใช้คำสั่งหลายคำสั่งสำหรับการดำเนินการเหล่านั้นดังที่แสดงด้วยตัวอย่างในซอฟต์แวร์

การจัดการบิตฮาร์ดแวร์

สถาปัตยกรรมทั้งหมดด้านล่างมีชุดคำสั่งย่อยและกลุ่มคำสั่งที่การจัดการบิตนั้นมีให้ในฮาร์ดแวร์ จากรายการจะเห็นได้ว่า DSP และ ไมโครคอนโทรลเลอร์ แบบฝังตัว มีคำสั่งทดสอบ/ตั้งค่า/ล้างบิตอย่างน้อยที่สุด แต่ยังมีคำสั่งที่ครอบคลุมมากกว่านั้น เช่น การนับศูนย์นำหน้า ,...

อินเทลและเอนด์ (x86)

ชุดคำสั่งหลักของสถาปัตยกรรม x86 ประกอบด้วย: BSR Bit Scan Reverse - ส่งคืนดัชนีบิตของบิตที่ตั้งค่าสูงสุดในอินพุต ซึ่งโดยพื้นฐานแล้วคือการนับเลขศูนย์นำหน้าแบบย้อนกลับ ไม่ได้กำหนดไว้สำหรับ 0 BSF Bit Scan Forward - ส่งคืนดัชนีบิตของบิตที่ตั้งค่าต่ำที่สุดในอินพุต...

พาวเวอร์ ไอเอ

Power ISA มีคำสั่งการจัดการบิตจำนวนมาก [ 7 ] ซึ่งส่วนใหญ่เป็นผลมาจากประวัติและความสัมพันธ์กับเมนเฟรมของ IBM และสถาปัตยกรรม z/