അസെംബ്ലി ഭാഷ
പ്രോഗ്രാമിങ് ഭാഷ / From Wikipedia, the free encyclopedia
അസ്സെംബ്ലി ഭാഷ ഒരു കമ്പ്യൂട്ടർ പ്രോഗ്രാമുകൾ എഴുതാൻ ഉതകുന്ന നിമ്നതല (low level) ഭാഷയാണ്. ആദ്യകാലങ്ങളിൽ മെഷീൻ കോഡുകൾ ഉപയോഗിച്ചുള്ള പ്രോഗ്രാമിങ് രീതി മാത്രമായിരുന്നു നിലവിലുണ്ടായിരുന്നത്. സങ്കീർണമായ ഈ രീതിയെ ലഘൂകരിക്കുന്നതായിരുന്നു 1950 കളിൽ ഉപയോഗിച്ചു തുടങ്ങിയ അസംബ്ളി ഭാഷാരീതി. രണ്ടാം തലമുറ പ്രോഗ്രാമിങ് ഭാഷ എന്നും ഇത് അറിയപ്പെടുന്നു. യന്ത്ര ഭാഷയെ അപേക്ഷിച്ച് സരളമായ നെമോണിക് കോഡുകൾ നിർദ്ദേശങ്ങളായി ഇതിൽ ഉപയോഗിക്കുന്നു.
മെഷീൻ ഭാഷയിൽ ഉപയോഗിക്കുന്ന ബൈനറി രീതിക്ക് പകരമായി അഡ്രസ്/ക്രിയകൾ രേഖപ്പെടുത്താൻ ഇംഗ്ലീഷ് വാക്കുകളോടു സാമ്യമുള്ള പേരുകൾ ആണ് ഈ ഭാഷയിൽ ഉപയോഗിക്കുന്നത്. (ഉദാ. ADD,DIV), പേരിൽ നിന്നു തന്നെ ഏതു ക്രിയ ചെയ്യണം എന്നത് എളുപ്പത്തിൽ ഗ്രഹിക്കാൻ സാധിക്കുന്ന രീതിയിലുള്ള പദങ്ങൾ ഉപയോഗിക്കുന്നതു മൂലം ഈ കോഡുകളെ നെമോണിക്കുകൾ (Mnemonics) എന്നു വിളിക്കുന്നു. അസ്സെംബ്ലി ഭാഷയും യന്ത്ര തല ഭാഷയും ഓരോരോ കമ്പ്യൂട്ടർ ആർക്കിടെക്ചറിനും വ്യത്യസ്തമാണ്. അതായത് ഒരു കമ്പ്യൂട്ടറിനായി ഉണ്ടാക്കുന്ന അസ്സെംബ്ലി ഭാഷാ പ്രോഗ്രാമുകൾ മറ്റൊരു കമ്പ്യൂട്ടർ ശ്രേണിയിൽ പ്രവർത്തിക്കണമെന്നില്ല. അതിനാൽ ഹൈ ലെവൽ കംപ്യൂട്ടർ ഭാഷകളെപ്പോലെ ഇവ പോർട്ടബിൾ അല്ല.
അസംബ്ലർ (നോ: അസംബ്ലർ) എന്ന സോഫ്റ്റ്വെയറാണ് അസംബ്ളി ഭാഷാ കോഡുകളെ മെഷീൻ ഭാഷയിലേക്ക് വിവർത്തനം ചെയ്യുന്നത്. നേരിട്ടുള്ള ഹാർഡ് വെയർ ക്രിയകൾക്കാണ് ഇന്ന് പ്രധാനമായും അസംബ്ളി ഭാഷ ഉപയോഗിക്കുന്നത്. ഡിവൈസ് ഡ്രൈവറുകളിലും എംബഡഡ് സംവിധാനങ്ങ ളിലും റിയൽ ടൈം സംവിധാനങ്ങളിലും അസംബ്ലി ഭാഷ ഉപയോഗിക്കാറുണ്ട്.
കമ്പ്യൂട്ടർ പ്രോഗ്രാമുകൾ നിർമ്മിക്കാൻ, അസ്സെംബ്ലി ഭാഷ, മുൻ കാലങ്ങളിൽ വ്യാപകമായി ഉപയോഗിക്കപ്പെട്ടിരുന്നു. എന്നാൽ കൂടുതൽ സരളമായ ഉന്നത തല ഭാഷകളുടെ ആവിർഭാവത്തോടു കൂടി ഈ ഭാഷയുടെ ഉപയോഗം കമ്പ്യൂട്ടർ ഹാർഡ്വെയറിനെ നേരിട്ട് നിയന്ത്രിക്കേണ്ടുന്ന പ്രോഗ്രാമുകളുടെ നിർമ്മാണത്തിൽ മാത്രമായി ഒതുങ്ങി. ഉന്നത തല ഭാഷകളേക്കാൾ വേഗത്തിൽ ഓടുമെന്നതാണ് അസെംബ്ലി ഭാഷയിലെഴുതപ്പെട്ടിട്ടുള്ള പ്രോഗ്രാമുകളുടെ ഗുണം. സി പോലുള്ള ഉന്നത തല ഭാഷകൾ അസെംബ്ലിയിലെഴുതിയ പ്രോഗ്രാമുകൾ ഉൾപ്പെടുത്താൻ സ്വന്തമായ വഴികൾ നൽകുന്നുണ്ട്.
അസംബ്ലി കോഡ് ഒരു അസംബ്ലർ എന്ന് വിളിക്കുന്ന ഒരു യൂട്ടിലിറ്റി പ്രോഗ്രാം ഉപയോഗിച്ച് എക്സിക്യൂട്ടബിൾ മെഷീൻ കോഡായി പരിവർത്തനം ചെയ്യുന്നു. "അസംബ്ലർ" എന്ന പദം സാധാരണയായി വിൽക്ക്സ്, വീലർ, ഗിൽ എന്നിവരുടെ 1951-ലെ ദി പ്രിപ്പറേഷൻ ഓഫ് പ്രോഗ്രാമ്സ് ഫോർ ആൻ ഇലക്ട്രോണിക് ഡിജിറ്റൽ കംപ്യൂട്ടർ [1] എന്ന പുസ്തകത്തിൽ പറഞ്ഞിരിക്കുന്നു, "അനേകം പ്രോഗ്രാമുകൾ ഉൾക്കൊള്ളുന്ന മറ്റൊരു പ്രോഗ്രാം കൂട്ടിച്ചേർക്കുന്ന ഒരു പ്രോഗ്രാം" എന്ന അർത്ഥത്തിലാണ് അവർ ഈ പദം ഉപയോഗിച്ചത്. എല്ലാ വിഭാഗങ്ങളും ഒരൊറ്റ പ്രോഗ്രാമിലേക്ക്".[2]സോഴ്സ് കോഡ് കൂട്ടിച്ചേർക്കുന്നതുപോലെ, പരിവർത്തന പ്രക്രിയയെ അസംബ്ലി എന്ന് വിളിക്കുന്നു. ഒരു അസംബ്ലർ ഒരു പ്രോഗ്രാം പ്രോസസ്സ് ചെയ്യുമ്പോഴുള്ള കമ്പ്യൂട്ടേഷണൽ ഘട്ടത്തെ അസംബ്ലി ടൈം എന്ന് വിളിക്കുന്നു.
അസംബ്ലി മെഷീൻ കോഡ് നിർദ്ദേശങ്ങളെ ആശ്രയിച്ചിരിക്കുന്നതിനാൽ, ഓരോ അസംബ്ലി ഭാഷയും കമ്പ്യൂട്ടർ ആർക്കിടെക്ചറിന് അനുയോജ്യമായ രീതിലുള്ളതാണ്.[3]
ചിലപ്പോൾ ഒരേ ആർക്കിടെക്ചറിനായി ഒന്നിലധികം അസംബ്ലറുകൾ ഉണ്ടാകും, ചിലപ്പോൾ ഒരു അസംബ്ലർ ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനോ അല്ലെങ്കിൽ ഒരു പ്രത്യേക ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനോ മാത്രമായിരിക്കും. മിക്ക അസംബ്ലി ഭാഷകളും ഓപ്പറേറ്റിംഗ് സിസ്റ്റം കോളുകൾക്ക് പ്രത്യേക വാക്യഘടന നൽകുന്നില്ല, കൂടാതെ മിക്ക അസംബ്ലി ഭാഷകളും ഏത് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിലും സാർവത്രികമായി ഉപയോഗിക്കാൻ കഴിയും, കാരണം എല്ലാ സിസ്റ്റം കോൾ മെക്കാനിസങ്ങളും ആത്യന്തികമായി പ്രോസസ്സറിന്റെ എല്ലാ കഴിവുകളിലേക്കും ഈ ഭാഷ പ്രവേശനം നൽകുന്നു. അസംബ്ലി ഭാഷകളിൽ നിന്ന് വ്യത്യസ്തമായി, മിക്ക ഹൈ-ലെവൽ പ്രോഗ്രാമിംഗ് ഭാഷകളും പൊതുവെ ഒന്നിലധികം ആർക്കിടെക്ചറുകളിലുടനീളം പോർട്ടബിൾ ആണ്, എന്നാൽ ഇന്റർപ്രെട്ടുചെയ്യുകയോ, കംപൈൽ ചെയ്യുകയോ വേണം, ഇത് അസംബ്ലി ചെയ്യുന്നതിനേക്കാൾ സങ്കീർണ്ണമായ ഒരു ജോലിയാണ്.
കമ്പ്യൂട്ടിംഗിന്റെ ആദ്യ ദശകങ്ങളിൽ, സിസ്റ്റം പ്രോഗ്രാമിംഗും ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിംഗും പൂർണ്ണമായും അസംബ്ലി ഭാഷയിലായിരുന്നു. ചില ആവശ്യങ്ങൾക്ക് പകരം വെക്കാനില്ലാത്തതാണെങ്കിലും, മിക്ക പ്രോഗ്രാമിംഗുകളും ഇപ്പോൾ ഉയർന്ന തലത്തിലുള്ള ഇന്റർപ്രട്ടഡും, കംപൈൽ ചെയ്തതുമായ ഭാഷകളിലാണ് നടത്തുന്നത്. നോ സിൽവർ ബുള്ളറ്റ് എന്ന ഗവേഷണ പ്രബന്ധത്തിൽ, ഫ്രെഡ് ബ്രൂക്ക്സ് അസംബ്ലി ഭാഷാ പ്രോഗ്രാമിംഗിൽ നിന്ന് മാറുന്നതിന്റെ അനന്തരഫലങ്ങൾ സംഗ്രഹിച്ചു: "തീർച്ചയായും സോഫ്റ്റ്വെയർ ഉൽപ്പാദനക്ഷമതയ്ക്കു വേണ്ടിയുള്ള ഏറ്റവും ശക്തമായ സ്ട്രോക്ക് നൽകുന്നതും,വിശ്വാസ്യതയും ലാളിത്യവും പ്രോഗ്രാമിങ്ങിലേക്ക് കൊണ്ടുവന്നത് ഉയർന്ന തലത്തിലുള്ള ഭാഷകളുടെ മികച്ച ഉപയോഗമാണ്. മിക്ക നിരീക്ഷകരും അതിന് ക്രെഡിറ്റ് നൽകുന്നു. ഉൽപ്പാദനക്ഷമത വേണ്ടിയുള്ള കുറഞ്ഞത് അഞ്ച് ഘടകങ്ങളെ ആശ്രയിച്ചുള്ള വികസനം, കൂടാതെ വിശ്വാസ്യത, ലാളിത്യം, ഗ്രഹണക്ഷമത എന്നിവയിൽ ഒത്തുചേരുന്ന നേട്ടങ്ങൾ മുതലായവയും ഉൾപ്പെടുന്നു."[4]
ഇന്ന്, ഉയർന്ന തലത്തിലുള്ള ഭാഷയിൽ നടപ്പിലാക്കിയ വലിയ സിസ്റ്റങ്ങൾക്കുള്ളിൽ ചെറിയ അളവിലുള്ള അസംബ്ലി ഭാഷാ കോഡ്, പ്രകടന കാരണങ്ങളാൽ അല്ലെങ്കിൽ ഉയർന്ന തലത്തിലുള്ള ഭാഷ പിന്തുണയ്ക്കാത്ത തലത്തിൽ ഹാർഡ്വെയറുമായി നേരിട്ട് സംവദിക്കുന്നതിനായി ഉപയോഗിക്കുന്നു. ഉദാഹരണത്തിന്, ലിനക്സ് കേർണൽ സോഴ്സ് കോഡിന്റെ 4.9 പതിപ്പിന്റെ 2% ത്തിൽ താഴെ മാത്രമേ അസംബ്ലിയിൽ എഴുതിയിട്ടുള്ളൂ; 97% ൽ കൂടുതൽ എഴുതിയിരിക്കുന്നത് സിയിലാണ്.[5]