ฉันเพิ่งถามตัวเองและทำร้ายสมองของฉันเป็นเวลาหลายชั่วโมง ยังไม่พบสิ่งใดที่ทำให้เป็นจริง ทุกคนที่เขียนบางอย่างในหัวข้อนั้นไม่สามารถ "สอน" ได้จริง หากคุณต้องการสอนใครซักคนจงใช้ภาษาพื้นฐานที่สุดที่คนเข้าใจดังนั้นเขาไม่จำเป็นต้องสนใจหัวข้ออื่น ๆ เมื่อจัดการหัวข้อ ดังนั้นฉันจึงได้ข้อสรุปสำหรับตัวเองที่ดูเหมือนจะเข้ากันได้ดีกับความโกลาหลทั้งหมดนี้
ในภาษาโปรแกรม C ทุกโปรแกรมเริ่มต้นด้วยmain()
ฟังก์ชั่น ภาษาอื่นอาจกำหนดฟังก์ชั่นอื่น ๆ ที่โปรแกรมเริ่มทำงาน main()
แต่การประมวลผลไม่ทราบ โปรเซสเซอร์รู้คำสั่งที่กำหนดไว้ล่วงหน้าเพียงตัวแทนจากการรวมกันของและ0
1
ในการเขียนโปรแกรมไมโครโปรเซสเซอร์ไม่มีระบบปฏิบัติการพื้นฐาน (Microsoft Windows, Linux, MacOS, .. ) คุณต้องบอกโปรเซสเซอร์อย่างชัดเจนว่าจะเริ่มต้นอย่างไรโดยการตั้งค่าProgramCounter
(PC) ที่วนซ้ำและกระโดด (ลูปการเรียกใช้ฟังก์ชัน) ภายใน คำสั่งที่รู้จักกับโปรเซสเซอร์ คุณจำเป็นต้องรู้ว่า RAM มีขนาดใหญ่แค่ไหนคุณต้องกำหนดตำแหน่งของสแต็กโปรแกรม (ตัวแปรโลคัล) รวมถึงตำแหน่งของฮีป (ตัวแปรไดนามิก) และตำแหน่งของตัวแปรทั่วโลก (ฉันเดาว่ามันเรียกว่า SSA ?) ภายใน RAM โปรเซสเซอร์เดียวสามารถดำเนินการได้ครั้งละหนึ่งโปรแกรมเท่านั้น
นั่นคือที่มาของระบบปฏิบัติการระบบปฏิบัติการนั้นเป็นโปรแกรมที่ทำงานบนโปรเซสเซอร์ โปรแกรมที่อนุญาตให้เรียกใช้งานโค้ดที่กำหนดเอง เรียกใช้หลาย ๆ โปรแกรมในเวลาเดียวกันโดยสลับระหว่างรหัสการเรียกใช้ของโปรแกรม (ซึ่งโหลดลงใน RAM) แต่ระบบปฏิบัติการเป็นโปรแกรมแต่ละโปรแกรมเขียนแตกต่างกัน เพียงแค่ใส่รหัสของโปรแกรมที่คุณกำหนดเองลงใน RAM จะไม่เรียกใช้ระบบปฏิบัติการจะไม่ทราบ คุณต้องเรียกใช้ฟังก์ชั่นบนระบบปฏิบัติการที่ลงทะเบียนโปรแกรมของคุณบอกระบบปฏิบัติการว่าหน่วยความจำของโปรแกรมต้องการหน่วยความจำเท่าใดโดยที่จุดเข้าสู่โปรแกรมอยู่ (main()
ฟังก์ชั่นในกรณีของ C) และนี่คือสิ่งที่ฉันคิดว่าตั้งอยู่ใน Runtime Library และอธิบายว่าทำไมคุณต้องมีไลบรารี่พิเศษสำหรับแต่ละระบบปฏิบัติการเพราะสิ่งเหล่านี้เป็นเพียงโปรแกรมของตัวเองและมีฟังก์ชั่นต่าง ๆ ในการทำสิ่งเหล่านี้
สิ่งนี้ยังอธิบายว่าเหตุใดจึงไม่เชื่อมโยงแบบไดนามิกที่รันไทม์เหมือน.dll
ไฟล์แม้ว่าจะถูกเรียกว่า RUNTIME Library Runtime Library จำเป็นต้องเชื่อมโยงแบบคงที่เนื่องจากจำเป็นเมื่อเริ่มต้นโปรแกรมของคุณ Runtime Library ฉีด / เชื่อมต่อโปรแกรมที่คุณกำหนดเองเข้ากับ / ไปยังโปรแกรมอื่น (ระบบปฏิบัติการ) ที่ RUNTIME นี่เป็นสาเหตุที่ทำให้สมองบางอย่าง ...
สรุป: RUNTIME Library ล้มเหลวในการตั้งชื่อ อาจจะไม่เคยมี.dll
(การเชื่อมโยงที่รันไทม์) ในครั้งแรกและปัญหาของการทำความเข้าใจความแตกต่างก็ไม่ได้อยู่ แต่แม้ว่าสิ่งนี้จะเป็นความจริง
ชื่อที่ดีขึ้นสำหรับ Runtime Library อาจเป็น: StartupLibrary / OSEntryLibrary / SystemConnectLibrary / OSConnectLibrary
หวังว่าฉันจะทำให้ถูกต้องขึ้นสำหรับการแก้ไข / การขยายตัว ไชโย