ასემბლი

თავისუფალი ქართულენოვანი ენციკლოპედია ვიკიპედიიდან
გადასვლა: ნავიგაცია, ძიება

ასემბლი (ზოგჯერ ასემბლერი; ინგ. assembly language) — დაბალი დონის პროგრამირების ენა. იგი აღიქვამს მანქანურ კოდს ადამიანისთვის გასაგებად. მანქანური კოდის ბიტების კომბინაციიდან არიან შედგენილი «მნემონიკები» (ბერძნულად მნემონიკოს, რომელიც ეხება მეხსიერებას) პროგრამული კოდის ადვილად დასამახსოვრებად. ასემბლერს (ამ შემთხვევაში პროგრამა) ეს მნემონიკები გადაჰყავს მანქანურ კოდში რომ შექმნას გაშვებადი ფაილი ანუ კომპიუტერული პროგრამა.

პირველ კომპიუტერებში, რასაც ასემლერი აკეთებს კეთდებოდა ხელით პროგრამისტის მიერ. დღესDრეობით გამოირჩევა ორი ტიპის სინტაქსის მქონე ასემბლერები: Intel და AT&T

უპირატესობები და ნაკლოვანობები[რედაქტირება]

უპირატესობები

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

ნაკლოვანობები

  • ასემბლერზე პროგრამირება გაცილებით რთულია ვიდრე მაღალი დონის ენებზე. საჭიროა პროგრამისტის მაღალი კვალიფიკაცია. მეტ დროს მოითხოვს შეცდომების პოვნა და გასწორება.
  • როგორც წესი საშუალო დონის პროგრამისტის მიერ დაწერილი კოდი ყოველთვის უფრო დიდი აღმოჩნდება ვიდრე იმავე პროგრამსიტის მიერ დაწერილი კოდი მაღალი დონი პროგრამირების ენაზე (თუნდაც C)
  • ასემბლერებს ახასიათებთ ბიბლიოთეკების მცირე რაოდენობა
  • კოდი "პირდაპირ კავშირშია" პროცესორთან, შესაბამისად ერთი პლატფორმისთვის შექმნილი პროგრამა სხვა პლატფორმაზე ვერ იმუშავებს

გამოყენება[რედაქტირება]

დღეისათვის ასემბლერები ნაკლები პოპულარობით სარგებლობენ მაგრამ Hardware–ში მათი წვლილი დიდია.

  • დრაივერები
  • ვირუსები
  • ანტივირუსები
  • ოპერაციული სისტემების ბირთვები
  • პროგრამირების ენები

იშვიათად, მაგრამ როდესაც კომპიუტერული თამაში ბევრ რესურსს მოითხოვს, პროგრამის აჩქარების მიზნით შესაძლებელია ასემბლერით შეიქმნას კოდის გარკვეული ფრაგმენტი (მაგალითად C ენას აქვს _asm{} დირექტივა)

სინტაქსი[რედაქტირება]

ასემბლერის ბრძანებების სია განისაზღვრება პროცესორის შესაძლებლობებით

ბრძანებების ტიპები თითქმის ყველა ასემბლერისთვის დამახასიათებელია რამდენიმე ათეული ბრძანება. მათ შორის:

  • მონაცემების მართვა, გადამისამართება (Mov)
  • არითმეტიკული ოპერაციები (add, sub, imul, div, inc, dec)
  • ლოგილური ოპერაციები (or, xor, and)
  • კოდის შესრულების მართვა, უპირობო და პირობითი გადასვლები (jmp, loop, jnz, jne, jng...)
  • სისტემური ფუნქციები (int)
  • შეტანა/გამოტანის პორტი (in, out)

დირექტივები დირექტივები არა პირდაპირ გადადიან მანქანის კოდში, არამედ სწორად წარმართავენ კომპილატორის (ასემბლერის) მუშაობას. მათ რიცხვშია:

  • კონსტანტების და ცვლადების გამოცხადება
  • გამშვები ფაილის ორგანიზება
  • კომპილატორის მუშაობის რეჟიმის მითითება
  • ყველანაირი აბსტრაქციები (მაღალი დონი პროგრამირების ელემენტები – ძირითადად პროცედურები და ფუნქციები, იშვიათად – სტრუქტურები)
  • მაკროსები


ასემბლერების სია[რედაქტირება]

თანამედროვე ასემბლერებია:

MASM - Microsoft Macro Assembler - ვინდოვსისთვის ყველაზე გავრეცელებული ასემბლერი აქვს მაკრო სინტაქსი და დიდი ბიბლიოთეკა

TASM - Turbo Assembler - MASM-ის კონკურენტი, Borland-ის პროდუქტი. გამოირჩევა IDEAL რეჟიმით.

GAS - GNU Assembler - "ლინუქსის ასემბლერი", აქვს AT&T სინტაქსი

FASM - Flat Assembler - ასემბლერის ნაირსახეობა, აქვს მრავალი დირექტივა. ამ ასემბლერით შეიქმნა პროგრამირების ენა Pascal, ასევე ოპერაციული სისტემები ManuetOS, ColibriOS

NASM - Netwide Assembler - კიდევ ერთი ასემბლერი, აღსანიშნავია, რომ ბიბლიოთეკები (.inc, .lib სახით) არ გააჩნია, ძირითადად ლინუქსისთვის გამოიყენება

YASM - NASM-ის "განახლებული" ვარიანტი.

HLASM - High Level Assembler - გამოსადეგია მათთვის ვისაც მაკრო ბრძანებების გამოყება სურს დაბალი დონის პროგრამირებაში.

იხილეთ აგრეთვე[რედაქტირება]

რესურსები ინტერნეტში[რედაქტირება]