เคอร์เนล Linux เปลี่ยนบางส่วนของโค้ดของคุณจาก Assembler เป็น C

การเขียนโปรแกรมภาษาค

ที่รู้จักกันดีก็คือ ภาษาแอสเซมเบลอร์นั้นเร็วที่สุด สำหรับปัญหาบางอย่างและด้วยเหตุนี้จึงมีการใช้มากที่สุดในเคอร์เนลของระบบปฏิบัติการที่แตกต่างกันและสิ่งเดียวกันนี้เกิดขึ้นกับโครงการแบบเรียลไทม์ที่ใช้อุปกรณ์อิเล็กทรอนิกส์ขั้นสูง ปัญหาจะตามมาในภายหลังเมื่อรหัสนั้นจำเป็นต้องได้รับการดูแลและไม่เป็นเช่นนั้นดังนั้น ในกรณีของเคอร์เนล Linux นักพัฒนาได้เลือกที่จะแปลโค้ด Assembler นั้นเป็น C.

C เป็นภาษาการเขียนโปรแกรม Linux ที่เป็นตัวแทนมากที่สุด (ที่จริงแล้วของแพลตฟอร์ม * nix ทั้งหมด) ได้รับการพัฒนาโดย เดนนิสริตชี่ และ Ken Thompson ในปีพ. ศ. 1972 มันถูกสร้างขึ้นในระบบ Unix PDP-11 และเป็นส่วนหนึ่งของ Unix เวอร์ชัน 2 ด้วยประสิทธิภาพและความสามารถในการพกพาที่สูงจึงเริ่มมีการใช้งานระบบปฏิบัติการมากขึ้นเรื่อย ๆ ดังนั้น Linus Torvalds เขาใช้มันสำหรับโครงการของเขาเมื่อย้อนกลับไปในปี 1990 เขากำลังมองหาทางเลือกที่เสรีและเปิดกว้างให้กับ Minix

แน่นอนว่าแม้จะมีจุดแข็งมากมาย แต่ Assembler ก็มีข้อได้เปรียบเหนือ C ตามที่เราได้กล่าวไว้ในตอนต้นดังนั้นการตัดสินใจครั้งนี้จึงทำให้ประหลาดใจ แต่จากสิ่งที่ ความคิดเห็น Andy Lutomirsky ในรายการส่งเมลของเคอร์เนลงานของคุณอยู่ระหว่างดำเนินการและ เคอร์เนลลินุกซ์ 4.1 จะเป็นคนแรกที่รวมซอร์สโค้ดนี้ซึ่งเขียนซ้ำจาก Assembler ถึง C. โดยเฉพาะอย่างยิ่งทุกสิ่งที่เกี่ยวข้องกับการออกจากโหมดผู้ใช้ซึ่งปัจจุบันประกอบด้วยโค้ดผสมจากภาษาโปรแกรมทั้งสองนี้ แต่เนื่องจากการบำรุงรักษาต่ำมีความซับซ้อนมากขึ้นเมื่ออัปเดต

นั่นคือ รหัสใน Assembler ไม่ได้รับการอัปเดตเป็นเวลานานและนั่นหมายความว่านักพัฒนาใหม่ยังไม่ชัดเจนเกี่ยวกับการทำงานของมันและสิ่งที่แย่กว่านั้นคือการอัปเดตนั้นไม่ใช่เรื่องง่าย ดังนั้นแทนที่จะลองเปลี่ยนบางส่วนพวกเขาเลือกที่จะเริ่มเปลี่ยนรูทีน Assembler ทั้งหมดเป็น C และโดยส่วนตัวแล้วฉันคิดว่าแม้ว่าความเร็วในการดำเนินการบางอย่างอาจหายไป (ซึ่งอาจน้อยที่สุดหากโค้ด C ใหม่มีประสิทธิภาพ) รหัสใหม่และชัดเจนมักจะดีกว่าเมื่อมีการล้าสมัยและแทบจะไม่มีความเป็นไปได้ในการอัปเดต เพราะยังไม่เข้าใจวิธีการนำไปใช้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   มิเกล มาโยล ตูร์ dijo

    อันดับแรกคือ ENSAMBLADOR ในภาษาสเปน

    ประการที่สองภาษาทั้งหมดจะต้องรวบรวม (หรือตีความ) ดังนั้นความดีของผลลัพธ์จึงขึ้นอยู่กับ COMPILER (หรือล่าม)

    เนื่องจากคอมไพเลอร์ C ได้รับการปรับปรุงให้ดีขึ้นมากและแอสเซมเบลอร์มีน้อยมาก (เพราะมันดีมากอยู่แล้ว) ปัจจุบันความแตกต่างของโปรแกรมคอมไพเลอร์ที่เขียนด้วย C เมื่อเทียบกับโปรแกรมเดียวกันที่เขียนในแอสเซมเบลอร์นั้นมีน้อยมากหรือไม่มีอยู่จริง (ก่อนหน้านี้ ไม่ได้)
    แม้แต่ความแตกต่างระหว่างโปรแกรมคอมไพล์ (C และอื่น ๆ ) และโปรแกรมตีความ (Java และอื่น ๆ ) ก็ยังถูกย่อให้เล็กลงอย่างมาก

    ดังนั้นการดูแลรักษา C ง่ายกว่าแอสเซมเบลอร์จึงเป็นการตัดสินใจที่ดีมากในการทำการเปลี่ยนแปลงเหล่านี้ในเคอร์เนลเมื่อทำการวิเคราะห์ผลประโยชน์ด้านต้นทุนจุดอ่อนภัยคุกคามจุดแข็งและโอกาสหรืออื่น ๆ ที่ได้ผล
    เพื่อประกอบการตัดสินใจ

    1.    Chiguire ไบโพลาร์ dijo

      สำหรับ Miguel Mayol Tur: ประการแรกโปรแกรมเมอร์ทุกคนที่อ้างว่าเป็นคนหนึ่งพูด ASSEMBLER และเข้าใจภาษาอังกฤษ คนอื่นใช้ Visual Basic และเรียกตัวเองว่าโปรแกรมเมอร์ ช่างน่าเสียดาย และประการที่สอง Assembler ไม่ได้รวบรวม สิ่งที่โปรแกรมจัดการคือแปลงหน่วยความจำเป็นไบต์โดยตรง การเขียนโปรแกรมใน Assembler กำลังพูดกับเครื่องในภาษาเดียวกัน แต่เพื่อให้ง่ายขึ้นเล็กน้อยการจำจะถูกใช้แทนการเขียนไบต์ที่เกี่ยวข้องโดยตรง มีความสอดคล้องแบบหนึ่งต่อหนึ่งระหว่างชุดไบต์และคำสั่งใน Assembler แต่แน่นอนว่ามีเพียงโปรแกรมเมอร์ตัวจริงเท่านั้นที่รู้ซึ่งเป็นหนึ่งในผู้ที่พูดว่า ASSEMBLER ดังนั้นจึงไม่มีการปรับปรุง "ตัวแปลง" จากแอสเซมเบลอร์ไปเป็นอ็อปโค้ดเนื่องจากโปรแกรมเมอร์เป็นผู้รับผิดชอบในการปรับปรุงนั้น คอมไพเลอร์ C (และภาษาอื่น ๆ ) แปลคำสั่งเป็นการแสดงมาโครที่กำหนดไว้ล่วงหน้าของแอสเซมเบลอร์ (หรือรหัสเครื่อง) และการปรับปรุงจะได้รับจากการแปลงเหล่านั้น
      ทำไมต้องใช้ C? เนื่องจากง่ายต่อการตรวจสอบและบำรุงรักษาสิ่งที่อ่านได้ง่ายกว่า คนส่วนใหญ่ไม่เข้าใจ opcodes หรือตัวช่วยจำของแอสเซมเบลอร์โดยตรง ง่ายๆแค่นั้นเอง
      ฉันจะไม่สนใจที่จะพูดถึง Java ซึ่งแม้ว่ามันจะถูกกำหนดให้เป็นมาตรฐานเมื่อนานมาแล้วก็ตาม แต่ตอนนี้ผู้ที่เข้าใจโค้ดก็เกลียดชัง
      แต่อย่าเชื่อฉันถาม Google ว่าสิ่งที่ฉันพูดที่นี่เป็นเท็จ
      ความนับถือ

      1.    เอริยูกิช dijo

        สวัสดีChigüireดวงตาของฉันตกจากใบหน้าของฉันโดยคิดว่าคุณไม่สามารถเขียนเป็นภาษาสเปนได้หากไม่ใช้คำศัพท์ภาษาอังกฤษ - แองโกล - แซกซอน: มีคำกล่าวว่า«แอสเซมเบลอร์»
        แน่นอนในสิ่งหนึ่งที่ฉันเห็นด้วยกับคุณมันเป็นการดีกว่าที่จะไม่พูดถึง java เพราะการพูดเรื่องไร้สาระมันจะดีกว่าที่จะทิ้งมันไป ฉันมีเพื่อนที่เป็นเหมือนคุณ แต่เป็นช่างไม้ (ไม่ใช่โปรแกรมเมอร์ผู้เชี่ยวชาญ) และเขาบอกว่าสิ่งที่ดีที่สุดคือเลื่อยมือและเครื่องมืออื่น ๆ ที่ดีกว่าที่ไม่ต้องพูดถึงเขาขันสกรูให้แน่นด้วยซ้ำ เป็นตัวอย่างที่น่าติดตาม!

  2.   หลุยส์ เจราร์โด มาริน dijo

    ภาษาอังกฤษเป็นรากฐานของคำศัพท์ในการคำนวณทั้งหมดเสมอ นั่นเป็นวิธีที่แม้ว่าเราผู้พูดภาษาสเปนจะไม่ต้องการก็ตาม นอกจากนี้ยังมีคำที่ไม่สามารถแปลเป็น "bit", "byte", "unix", "linux", "DOS" และอื่น ๆ อีกมากมาย และมีบางส่วนที่สามารถแปลได้ แต่ไม่มีกรณีเช่น "CMOS", "CSS", "RAM" เนื่องจากมีชื่อย่อบางส่วนที่ไม่มีส่วนเกี่ยวข้องกับเทคโนโลยีและด้านบนไม่มีแม้แต่ใน Google . ไม่มีประเด็นในการแปลเมื่อข้อความที่สร้างขึ้นไม่สามารถอ่านได้ สรุป: เป็นที่นิยมสำหรับปัญหาทางเทคนิคหรือการคำนวณที่จะใช้คำศัพท์ทางเทคนิคในภาษาอังกฤษ ด้วยเหตุผลเดียวกัน: ฉันชอบที่จะเขียนว่าฉันใช้ "windows" เพื่อบอกว่าฉันใช้ "windows" ของระบบปฏิบัติการ และฉันชอบพูดถึง CSS และฉันใช้ type = » text / css มากกว่าที่จะพยายามบอกว่าฉันใช้«สไตล์ชีตที่มีประเภทเท่ากับสไตล์ชีทข้อความแนวทแยง» สุขภาพ.

  3.   โรแบร์โตโกเมซ dijo

    โปรแกรมที่เขียนด้วยภาษาแอสเซมบลีจะถูกคอมไพล์เสมอไม่เคยตีความ อย่างไรก็ตามไม่มีอะไรผิดปกติในการใช้ภาษาสเปนแทน Spanglish ชื่อที่ถูกต้องจะไม่ถูกแปล แต่คำศัพท์ทางเทคนิคนั้นไม่ใช่คำย่อที่เป็นที่นิยม อย่างไรก็ตามทุกคนสามารถพูดได้ตามที่พวกเขาต้องการในขณะที่เรายังเข้าใจได้