កុំព្យូទ័រ, ការសរសេរកម្មវិធី
ទូរទស្សន៍ - គឺ ... ប្រភេទនៃការចងក្រង។ បម្លែងនិងកម្មវិធីចាក់ផ្សាយ
កម្មវិធីព្រមទាំងប្រជាជនដើម្បីបកប្រែពីភាសាមួយទៅមួយផ្សេងទៀតត្រូវបកប្រែឬបកប្រែ។
គំនិតជាមូលដ្ឋាន
កម្មវិធីនេះគឺជាការតំណាងភាសានៃការគណនា: P →→ខ្ញុំ P បាន (ខ្ញុំ) ។ អ្នកបកប្រែមួយគឺជាកម្មវិធីដែលត្រូវបានផ្គត់ផ្គង់ទៅកម្មវិធីបញ្ចូលការបញ្ចូល X P និងមួយចំនួនមួយ។ វាដំណើរការនៅ P x: ខ្ញុំ (P, X) = P (x) ។ ការពិតដែលថាមានតែមួយអ្នកបកប្រែដែលមានសមត្ថភាពសម្តែងនេះគឺជាកម្មវិធីដែលអាចធ្វើបានទាំងអស់ (ដែលអាចត្រូវបានតំណាងនៅក្នុងប្រព័ន្ធផ្លូវការ) គឺជាការ Turing រកឃើញយ៉ាងជ្រាលជ្រៅនិងសំខាន់ខ្លាំងណាស់។
ដំណើរការនេះគឺជាកម្មវិធីបកប្រែភាសានៃកម្មវិធីម៉ាស៊ីនមួយក្នុង។ ជាទូទៅមានតម្លៃថ្លៃពេកក្នុងការសរសេរកម្មវិធីបកប្រែសម្រាប់ភាសាកម្រិតខ្ពស់ដូច្នេះពួកគេប្រែទៅជាសំណុំបែបបទដែលជាការងាយស្រួលក្នុងការបកស្រាយមួយ។
ប្រភេទមួយចំនួននៃការបកប្រែមានឈ្មោះចម្លែកណាស់:
- កម្មវិធីដំឡើងនេះបានបកប្រែទៅជាភាសាភាសាការជួបប្រជុំម៉ាស៊ីន។
- ចងក្រងបកប្រែភាសាកម្រិតខ្ពស់ទៅជាភាសាទាប។
ទូរទស្សន៍ - ជាកម្មវិធីមួយដែលត្រូវចំណាយពេលជាការបញ្ចូលទិន្នន័យកម្មវិធីនេះនៅក្នុងភាសាមួយចំនួននិងរបស់ S ផលិតកម្មវិធី T មាននៅក្នុងរបៀបដែលពួកគេទាំងពីរមានសញ្ញាន័យដូចគ្នានេះមួយ: P → X បាន→ Q. តើនោះគឺជា, ∀x។ P (x) = សំណួរ (X) ។
ប្រសិនបើការចាក់ផ្សាយកម្មវិធីទាំងមូលចូលទៅក្នុងអ្វីមួយដែលបកស្រាយ, វាត្រូវបានហៅការចងក្រងមុនពេលចងក្រងប្រតិបត្តិឬ AoT មួយ។ ចងក្រង AoT អាចត្រូវបានប្រើនៅក្នុងស៊េរី, ក្រោយមកទៀតដែលជាញឹកញាប់ដំឡើងរថយន្តឧទាហរណ៍:
កូដប្រភពចងក្រង→ (ប្រែ) →→ការជួបប្រជុំកូដដំឡើងរថយន្ត (ចងក្រង) កូដ→→ម៉ាស៊ីនស៊ីភីយូ (បកប្រែ) ។
ប្រតិបត្ដិការឬថាមវន្តចងក្រងកើតឡើងនៅពេលដែលកម្មវិធីនេះត្រូវបានចាក់ផ្សាយនៅពេលដែលប្រតិបត្តិដោយផ្នែកចងក្រងពីមុនទៀត។ ក្រុមហ៊ុនជេអាយធីចងក្រង-ចាំពីអ្វីដែលពួកគេបានធ្វើរួចទៅហើយដូច្នេះដូចជាមិនមែនដើម្បីធ្វើឡើងវិញកូដប្រភពម្តងហើយម្តងទៀត។ ពួកគេបានសូម្បីតែអាចផលិតចងក្រងសម្របសម្រួលនិងបានចងក្រងដោយផ្អែកលើឥរិយាបថនៃបរិស្ថានការប្រតិបត្តិកម្មវិធី។
ភាសាជាច្រើនអនុញ្ញាតឱ្យប្រតិបត្តិកូដនៅពេលចងក្រងនិងចងក្រងលេខកូដថ្មីនៅពេលរត់។
ដំណាក់កាលបកប្រែ
ជំហាននៃការចាក់ផ្សាយមានការវិភាគនិងការសំយោគនេះ:
នេះជាប្រភពកូដវិភាគ→→→គំនិតម៉ាស៊ីនភ្លើងតំណាង (ឧបករណ៍សង្គ្រោះ) →កូដគោលដៅ។
នេះគឺដោយសារតែហេតុផលទាំងនេះ:
- វិធីសាស្រ្តណាមួយផ្សេងទៀតគឺមិនសមរម្យ។ ការបកប្រែព្រះបន្ទូលជាធម្មតាមិនដំណើរការ។
- ជាដំណោះស្រាយវិស្វកម្មល្អ: ប្រសិនបើអ្នកចង់សរសេរអ្នកបកប្រែសម្រាប់ភាសាប្រភព M និង N ជាគោលដៅត្រូវសរសេរតែកម្មវិធីសាមញ្ញ M + N (polukompilyatorov) ជាជាងស្មុគស្មាញ M បាន× N (សរុបនៃការបកប្រែ) ។
ទោះជាយ៉ាងណានៅក្នុងការអនុវត្តនូវទិដ្ឋភាពគំនិតនៃការកម្រណាស់ដែលបង្ហញឱ្យបានគ្រប់គ្រាន់និងអ្នកមានអំណាចគ្រប់គ្រាន់ដើម្បីគ្របដណ្តប់គ្រប់ភាសាប្រភពនិងគោលដៅសារធាតុចិញ្ចឹម។ ខណៈពេលដែលមួយចំនួនអាចចូលមកជិតទៅនេះ។
ចងក្រងពិតប្រាកដឆ្លងកាត់ដំណាក់កាលជាច្រើន។ នៅពេលដែលការបង្កើតកម្មវិធីចងក្រងផ្ទាល់របស់អ្នកមិនត្រូវការដើម្បីធ្វើឡើងវិញទាំងអស់ខិតខំថាមនុស្សដែលបានធ្វើក្នុងការបង្កើតនិងម៉ាស៊ីនភ្លើងតំណាង។ អ្នកអាចបកប្រែភាសារបស់អ្នកដោយផ្ទាល់នៅក្នុង JavaScript ឬ C និងទាញយកអត្ថប្រយោជន៍នៃ JavaScript ម៉ាស៊ីនដែលមានស្រាប់និងចងក្រង C ដើម្បីធ្វើនៅសល់។ អ្នកអាចប្រើការតំណាងមធ្យមដែលមានស្រាប់និង ម៉ាស៊ីននិម្មិត។
អ្នកបកប្រែកំណត់ត្រា
ទូរទស្សន៍ - គឺជាកម្មវិធីឬផ្នែករឹងដែលមានជាប់ពាក់ព័ន្ធនឹងបីភាសា: ប្រភពទិសដៅនិងគោល។ ពួកគេអាចត្រូវបានសរសេរនៅក្នុងក្រុមហ៊ុន T-រូបរាងដាក់ឆ្វេងដើម, ខាងស្ដាំនិងគោលដៅជាមូលដ្ឋានដូចខាងក្រោម។
មានបីប្រភេទនៃការចងក្រងគឺ:
- ទូរទស្សន៍ - គឺ samokompilyator ប្រសិនបើវាទាក់ទងទៅនឹងភាសាប្រភពមូលដ្ឋាន។
- កម្មវិធីចងក្រងដែលកំណត់គោលដៅគឺមានមូលដ្ឋានភាសាបានគេហៅថា samorezidentnym ។
- ទូរទស្សន៍ - ជាការឆ្លងកម្មវិធីចងក្រង, ប្រសិនបើគាត់បានកំណត់គោលដៅនិងភាសានានាមូលដ្ឋាន។
ហេតុអ្វីបានជានេះគឺមានសារៈសំខាន់?
សូម្បីតែប្រសិនបើអ្នកមិនដែលធ្វើឱ្យមានអ្នកចងក្រងពិតប្រាកដ, ចំនេះដឹងល្អនៃបច្ចេកវិទ្យានៃការបង្កើតរបស់ខ្លួននោះទេព្រោះគំនិតនេះប្រើសម្រាប់គោលបំណងនេះត្រូវបានគេប្រើយ៉ាងទូលំទូលាយឧទាហរណ៍:
- អត្ថបទដែលធ្វើទ្រង់ទ្រាយ;
- សំណួរភាសា ទៅមូលដ្ឋានទិន្នន័យ;
- ស្ថាបត្យកម្មកុំព្យូទ័រកម្រិតខ្ពស់;
- បញ្ហាបង្កើនប្រសិទ្ធិភាពទូទៅ;
- GUIs;
- ភាសាស្គ្រីប;
- ឧបករណ៍បញ្ជា;
- ម៉ាស៊ីននិម្មិត;
- ការបកប្រែម៉ាស៊ីន។
លើសពីនេះទៀតប្រសិនបើអ្នកចង់សរសេរកម្មវិធីដំណើរការជាមុន, linkers, កម្មវិធី, កម្មវិធីបំបាត់កំហុសនិងទម្រង់, អ្នកត្រូវតែចូលទៅតាមជំហានដូចគ្នាពេលសរសេរចងក្រងមួយ។
អ្នកអាចរៀនពីរបៀបសរសេរកម្មវិធីល្អប្រសើរជាងមុន, ចាប់តាំងពីការបង្កើតនៃការបកប្រែសម្រាប់ភាសាដែលមានន័យថាការយល់ដឹងកាន់តែប្រសើរឡើងនៃការ intricacies និងភាពមិនច្បាស់លាស់របស់ខ្លួន។ ការសិក្សានៃគោលការណ៍ទូទៅនៃការផ្សព្វផ្សាយនេះផងដែរដែលអនុញ្ញាតឱ្យអ្នកក្លាយជាអ្នករចនាម៉ូដជាភាសាល្អ។ ដូច្នេះតើវាមានបញ្ហាពីរបៀបភាសាប្រសិនបើវាមិនអាចត្រូវបានអនុវត្តមានប្រសិទ្ធិភាពចោទឬ?
បច្ចេកវិទ្យាទូលំទូលាយ
គ្របដណ្តប់តំបន់បច្ចេកវិទ្យាចងក្រងនៃការផ្សេងគ្នាជាច្រើនវិទ្យាសាស្រ្តកុំព្យូទ័រ:
- ទ្រឹស្តីជាផ្លូវការនៃភាសា: វេយ្យាករណ៍, ញែក, កុំព្យូទ័រ!
- ស្ថាបត្យកម្មកុំព្យូទ័រ។ សំណុំបង្រៀន, RISC ឬ CISC, វដ្តដំណើរការស្នូលបំពង់បង្ហូរប្រេងនាឡិកាល;
- គំនិតនៃភាសាសរសេរកម្មវិធី, ឧទាហរណ៍, ការសម្តែងការគ្រប់គ្រងលំដាប់, ប្រតិបត្តិលក្ខខណ្ឌការនិយាយឡើងវិញ, ការហៅខ្លួនឯង, បំបែកមុខងារ, ម៉ូឌុល, ធ្វើសមកាលកម្ម, មេតាការសរសេរកម្មវិធី, វិសាលភាព, អនុប្រភេទ-ថេរ, ពុម្ព, ប្រភេទទិន្នផល, គំរូ, ចំណារពន្យល់, លំហូរ monads ប្រអប់សំបុត្របន្ត , តួអក្សរជំនួស, កន្សោមធម្មតា, ការចងចាំប្រតិបត្តិការ, មរតក, ពហុសណ្ឋាន, ការកំណត់របៀបនិងដូច្នេះនៅលើល។ ។
- ភាសាអរូបីនិងម៉ាស៊ីននិម្មិត;
- ក្បួនដោះស្រាយនិង ទិន្នន័យរចនាសម្ព័ន្ធ: កន្សោមធម្មតា, ក្បួនដោះស្រាយការញែក, ក្បួនដោះស្រាយក្រាហ្វិក សរសេរកម្មវិធីថាមវន្ត, ការបណ្តុះបណ្តាល;
- ភាសាសរសេរកម្មវិធី: វាក្យសម្ព័ន្ធសញ្ញាន័យវិទ្យា (ឋិតិវន្តនិងថាមវន្ត), គំរូគាំទ្រ (រចនាសម្ព័ន្ធ OOP, មុខងារ, ឡូជីខល, ជង់ប៉ារ៉ាឡែល, មេតាការសរសេរកម្មវិធី)
- កម្មវិធីដែលបានបង្កើត (កម្មវិធីចងក្រង, ធម្មតាមានទំហំធំនិងស្មុគស្មាញ): ធ្វើមូលដ្ឋានីយកម្ម, ឃ្លាំងសម្ងាត់, componentize, API របស់ចំណុចប្រទាក់, ការប្រើប្រាស់ឡើងវិញ, ធ្វើសមកាលកម្ម។
រចនាកម្មវិធីចងក្រង
បញ្ហាមួយចំនួនបានជួបប្រទះនៅក្នុងការអភិវឌ្ឍនៃការបកប្រែពិតប្រាកដ:
- បញ្ហាជាមួយនឹងភាសាប្រភព។ វាជាការងាយស្រួលក្នុងការចងក្រងវាទេ? តើមានកម្មវិធីដំណើរការជាមុនមួយ? ប្រភេទយ៉ាងដូចម្ដេច? តើមានបណ្ណាល័យមួយ?
- ក្រុមការបញ្ជូនបាល់កម្មវិធីចងក្រង: នៅលីវឬច្រើនវិធី?
- កម្រិតនៃការបង្កើនប្រសិទ្ធិភាពដែលអ្នកចង់បាន។ កម្មវិធីចាក់ផ្សាយមានល្បឿនលឿននិងមិនបរិសុទ្ធជាមួយនឹងការបង្កើនប្រសិទ្ធិភាពតិចតួចឬគ្មានអាចត្រូវបានធម្មតា។ បង្កើនប្រសិទ្ធិភាពលើចងក្រងនឹងកាត់បន្ថយនោះទេតែល្អប្រសើរជាងមុននៅពេលរត់កូដដែលអាចមានតម្លៃវា។
- កម្រិតនៃការតម្រូវឱ្យរកឃើញកំហុស។ អាចបកប្រែគ្រាន់តែបញ្ឈប់ការនៅកំហុសជាលើកដំបូង? នៅពេលដែលវាគួរតែបញ្ឈប់? ថាតើត្រូវទុកចិត្តលើការកែកំហុសចងក្រង?
- អាចរកបាននៃឧបករណ៍។ ប្រសិនបើមានភាសាដើមគឺជាការមិនតូចខ្លាំងណាស់ដែលបានវិភាគម៉ាស៊ីនស្កេននិងម៉ាស៊ីនភ្លើងត្រូវបានទាមទារ។ មានផងដែរម៉ាស៊ីន, ម៉ាស៊ីនកូដនោះទេប៉ុន្តែពួកគេមិនមែនជារឿងធម្មតាដូច្នេះ។
- ប្រភេទនៃកូដគោលដៅអាចត្រូវបានបង្កើត។ ត្រូវបានជ្រើសពីថ្នាំគ្រាប់ឬកូដម៉ាស៊ីននិម្មិតសុទ្ធ។ ឬគ្រាន់តែសរសេរចំណែកធាតុដែលបង្កើតជាតំណាងមធ្យមពេញនិយមដូចជា LLVM, RTL បានឬ JVM ។ ឬធ្វើឱ្យការបកប្រែនៃដើមនៅក្នុងកូដប្រភពក្នុង C ឬ JavaScript ។
- ទ្រង់ទ្រាយនៃកូដគោលដៅ។ អ្នកអាចជ្រើស ភាសាដែលបានជួបប្រជុំគ្នាជា កូដម៉ាស៊ីនចល័ត, រូបភាពម៉ាស៊ីនកូដចងចាំ។
- Retargeting ។ ពេលសំណុំនៃម៉ាស៊ីននេះគឺជាការល្អដើម្បីឱ្យមានចំណែកដៃសមុទ្ររួម។ សម្រាប់ហេតុផលនេះវាជាការល្អបំផុតដើម្បីឱ្យមានម៉ាស៊ីនភ្លើងមួយសម្រាប់ការបញ្ចូលនៃផ្នែកជាច្រើន។
ស្ថាបត្យកម្មកម្មវិធីចងក្រង: សមាសភាគ
ទាំងនេះគឺជាសមាសភាគសំខាន់នៃការចងក្រងមុខងារដែលបង្កើតលេខកូដជនជាតិដើម (ប្រសិនបើកម្មវិធីលទ្ធផលគឺជាកម្មវិធីក្នុង C ឬម៉ាស៊ីននិម្មិតមួយដែលអ្នកត្រូវការមិនដំណាក់កាលជាច្រើន) មួយ:
- កម្មវិធីបញ្ចូល (សញ្ញាលំហូរ) ត្រូវបានចុកទៅជាម៉ាស៊ីនស្កេន (វិភាគ lexical) ដែលបានបម្លែងវាទៅក្នុងស្ទ្រីមថូខឹនមួយ។
- កម្មវិធីញែក (ញែក) ការសាងសង់ដើមឈើវាក្យសម្ព័ន្ធអរូបីមួយ។
- វិភាគ semantic decomposes ព semantic និងថ្នាំងដើមឈើដែលពិនិត្យសម្រាប់កំហុស។ ជាលទ្ធផលបានកសាងឡើងក្រាហ្វ semantic - ដើមឈើវាក្យសម្ព័ន្ធអរូបីមួយនឹងលក្ខណៈសម្បត្តិបន្ថែមទៀតនិងតំណភ្ជាប់បានបង្កើតឡើង។
- ម៉ាស៊ីនភ្លើងកូដកម្រិតមធ្យមកសាងក្រាហ្វលំហូរមួយ (tuple ត្រូវបានដាក់ជាក្រុមចូលទៅក្នុងប្លុកសំខាន់) ។
- ម៉ាស៊ីនល្អប្រសើរលេខកូដធ្វើឯករាជ្យក្នុងស្រុក (នៅក្នុងឯកតាមូលដ្ឋាន) និងជាសកល (ទៅប្លុកទាំងអស់) បង្កើនប្រសិទ្ធិភាពមូលដ្ឋាននៅសល់នៅក្នុងទម្រង់ការ។ កាត់បន្ថយការងាយស្រួលនិងទូលំទូលាយកូដគណនាបាន។ លទ្ធផលគឺក្រាហ្វលំហូរមួយដែលបានកែប្រែទេ។
- ម៉ាស៊ីនភ្លើងភ្ជាប់ប្លុកមូលដ្ឋានកូដគោលដៅចូលទៅក្នុងការត្រួតពិនិត្យការបញ្ជូនកូដ rectilinear, ការបង្កើតឯកសារវត្ថុដែលបានចុះឈ្មោះដំឡើងនិម្មិត (អាចធ្វើទៅគ្មានប្រសិទ្ធភាព) ។
- ម៉ាស៊ីនពឹងផ្អែកល្អប្រសើរបំផុត, linker ផ្តល់ការចងចាំរវាងបញ្ជីនិងធ្វើឱ្យក្រុមអ្នករៀបចំផែនការ។ វាដំណើរការកម្មវិធីបម្លែងនៅក្នុងភាសាការជួបប្រជុំគ្នានៅឯការជួបប្រជុំជាមួយនឹងការប្រើប្រាស់ល្អនៃការផ្ញើតាមបំពង់នេះ។
លើសពីនេះទៀតការប្រើប្រាស់នៃការរកឃើញកំហុសអ្នកគ្រប់គ្រងប្រព័ន្ធរងនិងតារាងនិមិត្តសញ្ញា។
វិភាគ Lexical (ស្កេន)
ម៉ាស៊ីនស្កេននេះបានបម្លែងតួអក្សរប្រភពស្ទ្រីមទៅក្នុងស្ទ្រីមថូខឹនយកចន្លោះមតិយោបល់និងម៉ាក្រូពង្រីកមួយ។
ម៉ាស៊ីនស្កេនដែលជាញឹកញាប់ជួបប្រទះបញ្ហាដូចជាថាតើឬមិនយកទៅក្នុងគណនីករណី, រឹម, ការចុះបន្ទាត់និងយោបល់ដែលបានបង្កប់។
កំហុសដែលអាចកើតឡើងក្នុងអំឡុងពេលស្កេន, ដែលហៅថា lexical និងរួមបញ្ចូល:
- តួអក្សរដែលមិនមាននៅក្នុងអក្ខរក្រម;
- លើសចំនួនតួអក្សរក្នុងពាក្យមួយឬបន្ទាត់;
- មិនមែនជាសញ្ញាដែលបិទជិតឬខ្សែអក្សរព្យញ្ជនៈមួយ;
- ចុងបញ្ចប់នៃឯកសារនៅក្នុងអត្ថាធិប្បាយបានទេ។
ការញែក (ញែក)
ញែកបម្លែងលំដាប់នៃថូខឹនដែលបានចូលទៅក្នុងមែកធាងវាក្យសម្ព័ន្ធមួយអរូបី។ ថ្នាំងនីមួយនៅក្នុងមែកធាងដែលត្រូវបានរក្សាទុកជាវត្ថុដែលមានវាលដែលមានឈ្មោះថា, មានមនុស្សជាច្រើនដែលមានខ្លួនគេផ្ទាល់ជាមួយដើមឈើថ្នាំង។ នៅដំណាក់កាលនេះមិនមានវដ្តទេ។ នៅពេលដែលអ្នកបង្កើតកម្មវិធីញែកគឺជាការចាំបាច់ក្នុងការយកចិត្តទុកដាក់កម្រិតនៃភាពស្មុគស្មាញនៃវេយ្យាករណ៍ (LL ឬការស្នាក់នៅ) និងបានរកឃើញថាតើវាមានពាក្យស្រដៀងគ្នាច្បាប់។ ភាសាមួយចំនួនទាមទារឱ្យមានការវិភាគ semantic ។
កំហុសដែលបានរកឃើញនៅដំណាក់កាលនេះត្រូវបានគេហៅរូបមន្ត។ ឧទាហរណ៍:
- k = 5 * (7 - y;
- j = / 5;
- 56 = x * 4 ។
ការវិភាគ semantic
ក្នុងអំឡុង វិភាគ semantic ដើម្បីពិនិត្យមើលការអនុញ្ញាតរបស់ច្បាប់និងផ្នែករងនៃដើមឈើញែកនេះ (ដែលអនុញ្ញាតឱ្យឈ្មោះឯកសារយោងសម្រាប់ការផ្លាស់ប្រែចិត្ដប្រតិបត្ដិការបញ្ចូលប្រភេទជាក់ច្បាស់និងដូច្នេះនៅលើ។ ឃ) សម្រាប់ការបង្កើតក្រាហ្វ semantic នេះ។
ជាក់ស្តែង, សំណុំនៃការទទួលយកនៃច្បាប់ក្នុងភាសាផ្សេងគ្នាផ្សេងគ្នា។ ប្រសិនបើអ្នកបានចងក្រងជាភាសាជ្វាដូចដែលបានចងក្រងអាចរកឃើញ:
- ប្រកាសអថេរច្រើននៅក្នុងវិសាលភាពរបស់ខ្លួន;
- យោងទៅអថេរមុនពេលសេចក្តីប្រកាសរបស់ខ្លួន;
- សេចក្តីយោងទៅតាមឈ្មោះរបស់ដែលមិនប្រកាសនេះ;
- ការរំលោភលើសិទ្ធិប៉ាតង់;
- ចំនួនលើសលប់ឬមិនគ្រប់គ្រាន់នៃអាគុយម៉ង់នៅក្នុងការហៅវិធីសាស្រ្តមួយ;
- ប្រភេទមិនត្រូវគ្នា។
ជំនាន់
ជំនាន់កូដកម្រិតមធ្យមផលិតក្រាហ្វលំហូរសមាសភាពនៃ tuple, បានដាក់ជាក្រុមចូលទៅក្នុងប្លុកមូលដ្ឋាន។
ជំនាន់កូដផលិតកូដម៉ាស៊ីនមួយពិតប្រាកដ។ នៅក្នុងការចងក្រងប្រពៃណីសម្រាប់ RISC-ម៉ាស៊ីននៅលើជំហានដំបូងអ្នកបង្កើតដំឡើងរថយន្តជាមួយចំនួនគ្មានទីបញ្ចប់នៃការចុះឈ្មោះនិម្មិតមួយ។ សម្រាប់ CISC ម៉ាស៊ីន-ប្រហែលជានឹងមិនកើតឡើង។
Similar articles
Trending Now