რა არის ინსტრუქციის ნაკრები?

ნებისმიერი CPU შექმნილია თავიდანვე კონკრეტული ინსტრუქციის ნაკრების მხარდასაჭერად. ინსტრუქციების ნაკრები არის მყარი კოდირებული ოპერაციების ნაკრები, რომელიც CPU-ს შეუძლია შეასრულოს. ეს ოპერაციები შეიძლება იყოს, მაგალითად, ორი რიცხვის შეკრება, პროგრამის სხვადასხვა ნაწილზე გადახტომა ან ორი მნიშვნელობის შედარება. თითოეული ოპერაცია, რომელსაც შეუძლია კომპიუტერი შეასრულოს, ცალსახად არის წარმოდგენილი opcode-ით.

ოპკოდები

პროგრამის შესრულებისას, CPU იყენებს პროგრამის მრიცხველს, რათა თვალყური ადევნოს რომელი ინსტრუქცია უნდა შესრულდეს შემდეგში. როდესაც ინსტრუქცია მიიღება, პროგრამის მრიცხველი იზრდება ინსტრუქციის სიგრძით ისე, რომ იგი მიუთითებს შემდეგი ინსტრუქციის დასაწყისზე. თითოეული ინსტრუქცია შედგება ოპკოდისგან. ინსტრუქციის მიხედვით, ის შეიძლება შეიცავდეს ან არ შეიცავდეს ოპერანდებს. ოპერანდები შეიძლება იყოს მუდმივი მნიშვნელობა ან მაჩვენებელი მნიშვნელობის ადგილმდებარეობის შესახებ CPU რეესტრში ან სისტემის RAM-ში.

სრული ინსტრუქციის მიღების შემდეგ, საჭიროა მისი გაშიფვრა. ეს არის პროცესი, როდესაც CPU გამოყოფს opcode-ს და ნებისმიერ ოპერანდს. დეკოდირებული ოპკოდი გამოიყენება პროცესორში კონკრეტული ელექტრული გზების გასააქტიურებლად ან გამორთვისთვის, რაც გამოიწვევს სწორ მუშაობას.

მას შემდეგ რაც ინსტრუქცია გაშიფრულია, ის შესრულდება. CPU-ს ზუსტი ქცევა დამოკიდებული იქნება ოპერაციაზე. დამატების ოპერაცია შეაჯამებს ორ მნიშვნელობას. გადახტომის ოპერაცია გამოითვლება სად უნდა გადახტე პროგრამაში. შედარების ოპერაცია შეადარებს ორ მნიშვნელობას. NOP ოპერაცია უმოქმედო იქნება, რადგან NOP ნიშნავს No Operation-ს.

ინსტრუქციების უმეტესობა შემდეგ გამოიტანს ოპერაციის შედეგს. ეს გამომავალი შეიძლება გადავიდეს პროცესორის რეგისტრებში და, საჭიროების შემთხვევაში, სისტემის RAM-ში. თითოეულ ამ ოპერაციას სჭირდება ერთი საათის ციკლი.

უკანონო ოპერაციული კოდები

თითოეულ CPU არქიტექტურას აქვს მწარმოებლის მიერ გამოქვეყნებული opcodes-ის სპეციფიკური სია. ამ ოპკოდების მნიშვნელობები სულაც არ არის იგივე კროს პლატფორმა, რის გამოც პროგრამული უზრუნველყოფის შედგენა საჭიროა სხვადასხვა არქიტექტურისთვის. ზოგიერთ შემთხვევაში, მწარმოებელი ასევე შეიცავს არადოკუმენტურ ოპკოდებს. მათ მოიხსენიებენ, როგორც "უკანონო ოპკოდებს". არალეგალური ოპკოდები, თუმცა დაუსაბუთებელია, შეასრულებენ ერთსა და იმავე ფუნქციას ყოველ ჯერზე, როცა ისინი გამოიძახებენ. თუმცა, როგორც დაუსაბუთებელი და არასტანდარტული ფუნქციები, CPU არქიტექტურის განახლებებს შეუძლია უბრალოდ წაშალოს ისინი.

ზოგიერთი ადრეული კომპიუტერული თამაში Apple II-ზე ეყრდნობოდა კონკრეტულ უკანონო ოპერაციულ კოდებს. შემდეგ მათ განიცადეს მუშაობისა და სტაბილურობის პრობლემები მოგვიანებით Apple IIc CPU-ს გადასინჯვისას, რადგან IIc-მა ამოიღო თამაშებისთვის საჭირო უკანონო ოპერაციული კოდები. უკანონო ოპკოდები ასევე გამოიყენებოდა საავტორო უფლებების დაცვის წრეებში, როგორც უსაფრთხოების მეთოდი გაურკვევლობის გზით მეკობრეების წინააღმდეგ ბრძოლაში, რომლებიც არღვევდნენ მათ შინაარსს. ზოგიერთი უკანონო ოპერაციული კოდი უბრალოდ იგულისხმება როგორც გამართვის ინსტრუმენტები და შეცდომების დამმუშავებლები.

x86 ინსტრუქციების ნაკრები შეიცავს დიდი რაოდენობით დაუსაბუთებელ არალეგალურ ოპკოდებს. საინტერესოა, რომ ზოგიერთი მათგანი გაზიარებულია Intel-ისა და AMD CPU-ებს შორის, რაც მიუთითებს იმაზე, რომ ორივე კომპანია საჯაროდ აცნობიერებს მათ მიზნებს, როდესაც ისინი არ არიან დოკუმენტირებული.

შემდგენელები და ასამბლეა

პროგრამების უმეტესობა დაწერილია მაღალი დონის ენებზე. ეს შედარებით ადვილად იკითხება, ხშირად იყენებენ ინგლისურ სიტყვებს ან სტენოგრამას სწავლის მრუდების შესამცირებლად. იმისათვის, რომ კომპიუტერმა შეასრულოს ეს პროგრამები, საჭიროა მათი შედგენა. შემდგენელი ძირითადად მთარგმნელია. ის იღებს მაღალი დონის კოდს და გარდაქმნის მას კომპიუტერულ კოდად, ინსტრუქციები, რომელთა გაგებაც CPU-ს შეუძლია.

ზოგიერთ ენაში ასევე შესაძლებელია არაკომპლიტული კოდის გაშვება ადრე შედგენილი პროგრამის მეშვეობით, რომელიც აწარმოებს მანქანურ კოდს. ასამბლეა არის დაბალი დონის პროგრამირების ენა, რომელიც იყენებს სტენოგრამას, რათა დეველოპერებს მისცეს პირდაპირი ხილვადობა და კონტროლი შესრულებულ ოპერაციებზე. NOP არის ასამბლეის სტენოგრაფიის მაგალითი.

დასკვნა

ინსტრუქციების ნაკრები არის ოფიციალური ფუნქციების სია, რომლებიც CPU არქიტექტურას შეუძლია. ეს არის ოპერაციების ჩამონათვალი, რომელიც შეიძლება შესრულდეს. ეს ოპერაციები მყარი კოდირებულია CPU-ში და იწოდება მათი შესაბამისი ოპკოდების გამოყენებით.

პროგრამული უზრუნველყოფა, როგორც წესი, იყენებს შემდგენელს, რათა თარგმნოს ადამიანის მიერ წაკითხული მაღალი დონის კოდიდან მანქანის კოდზე, რომლის წაკითხვაც CPU-ს შეუძლია. ზოგჯერ, CPU არქიტექტურას შეიძლება ჰქონდეს დაუსაბუთებელი ოპკოდები, რომელსაც უწოდებენ არალეგალურ ოპკოდებს. არალეგალური ოპერაციული კოდები ტექნიკურად ინსტრუქციების ნაკრების ნაწილია. თუმცა, ისინი შეიძლება არ იყოს საიმედოდ ხელმისაწვდომი პლატფორმის მომავალ გამეორებებში. არ დაგავიწყდეთ თქვენი აზრების დატოვება ქვემოთ მოცემულ კომენტარებში.