Dasturni nasm kompilyatori orqali yig'ish uchun buyruqlar qatoriga quyidagi yoziladi


Download 494.54 Kb.
Pdf ko'rish
bet2/4
Sana22.04.2023
Hajmi494.54 Kb.
#1382511
1   2   3   4
Bog'liq
11.2-amaliy

elf
Linux, shuningdek, Unix System V turkumiga mansub Solaris x86, 
UnixWare va SCO Unix tizimlarida juda keng qo'llaniladigan andoza turi. 
elf (Executable and Linkable Format – Bajariladigan va Ulanadigan 
Andoza) obyekt fayllari o kengaytmali bo'ladi. 
Yuqoridagi andoza turlari NASMning ­f kalitiga qiymat sifatida beriladi.
Linux tizimida yuqorida ko'rib chiqilgan birinchi dastur quyidagicha yig'iladi:
$ nasm ­f elf birinchi_dastur.asm
Shundan so'ng joriy direktoriyada birinchi_dastur.o ismli obyekt fayl paydo bo'ladi. Windowsda 
esa asosan win32 andozasi qo'llaniladi:
> nasm ­f win32 birinchi_dastur.asm
1
NASM kompilyatorini operatsion tizimda qanday o'rnatish «NASMni o'rnarish» ilovasida keltirilgan. Buyruqlar qatorida ishlash 
yuzasidan savollar bo'lsa «Buyruqlar qatorida ishlash» ilovasiga qarang.
63


Shundan so'ng joriy direktoriyada birinchi_dastur.obj ismli obyekt fayl paydo bo'ladi. Obyekt 
fayldan to'laqonli bajaruvchi kodga ega bo'lish uchun yana bir bosqich mavjud va u keyingi 
mavzuda yoritiladi.
Dastur yig'ilayotgan chog'da warning yoki error kabi xabarlar buyruqlar qatorida paydo 
bo'lib qolishi mumkin. Kompilyator warning orqali dasturda shubhali ifoda borligi va u 
keyinchalik kutilmagan natijaga olib kelishi mumkinligi haqida ogohlantiradi. Ammo bu holatda 
kompilyator o'z ishini to'xtatmaydi va obyekt faylni yaratadi. error esa dastur tuzilishida xato 
borligini bildiradi va bu holatda kompilyator o'z ishini to'xtatadi. Hech qanday obyekt fayl ham 
yaratilmaydi. Bu vaziyatda xato dasturning nechanchi qatorida yuz bergani e'lon qilinadi va 
dasturchi xatoni tuzatib, kompilyatorni qayta ishga tushirishi kerak. 
5.9. Obyekt fayllarni ulash
Obyekt fayllarni ulash dasturni mashina tiliga o'girishning oxirgi bosqichi bo'lib, bunday 
vazifani bajaradigan dastur ulovchi deyiladi. Ulovchi dasturining vazifasi bir yoki bir necha 
obyekt fayllarni bitta bajaruvchi faylga ulashdan iborat. Bu jarayon 17-rasmda tasvirlangan.
17­rasm.
Ulovchiga beriladigan obyekt fayllarning albatta bittasi dasturning boshlanish nuqtasiga ega 
bo'lishi kerak (agar dasturiy kutubxona yaratmayotgan bo'lsangiz, albatta). Ulovchi bunday 
nuqtani uchratmasa yoki ikki marta uchratsa xato yuz beradi. Dasturning boshlanish nuqtasini 
main nishoni bo'lib, elf andozasidan tashqari barcha obyekt fayl andozalarida ushbu nishon 
pastki chiziq (_) belgisi bilan boshlanadi. Demak, dasturchi qaysi obyekt fayl andozasidan 
foydalanayotganiga qarab doim dastur boshlanish nuqtasini moslab borishi kerak. Ushbu kitob 
maxsus bir obyekt fayl andozasiga emas, balki barcha operatsion tizimlarga mo'ljallangani 
uchun keyingi mavzulardan boshlab dastur kirish nuqtasini berish umumiy usulni qo'llagan holda 
amalga oshiriladi. Gap shundaki, nasm­io.inc boshlang'ich faylida kitob muallifi tomonidan 
tizim_global makrosi berilgan. Ushbu makro juda qulay bo'lib, uni oddiy assemblerdagi 
global kalit so'zining o'rnida ishlatish orqali obyekt fayl andozasi haqida unutish mumkin. 
tizim_global makrosi unga berilgan nishonni o'zi obyekt fayl andozasiga moslaydi. Demak, 
dastur kirish nuqtasi tizim_global makrosi yordamida operatsion tizim yoki obyekt fayl 
turidan qat'i nazar quyidagicha e'lon qilinadi:
tizim_global main
main:
64


Agar sizni ushbu makro qanday tuzilgani qiziqtirsa, «Makro vositalar» bobiga qarang.
Mazkur kitobdagi deyarli barcha amaliy dasturlar C mezoniy kutubxonasidagi printf
scanf kabi qism dasturlaridan foydalanadi. Demak, NASM yaratgan obyekt fayllarga C mezoniy 
kutubxonasi ham ulanishi kerak. Ammo buni oddiy ulovchi dasturi bilan amalga oshirish bir oz 
murakkabroq. Shuning uchun ushbu kitobda obyekt fayllarni ulash C kompilyatori yordamida 
bajariladi. Assembler kompilyatorlaridan farqli o'laroq barcha C kompilyatorlari o'z ulovchilariga 
ega va ular ortiqcha mehnat talab qilmasdan ulashni o'z-o'zidan bajarishadi.
Juda ko'p C kompilyatorlari mavjud bo'lib, shulardan eng mashhuri GCC (GNU C Compiler) 
hisoblanadi. Ushbu mahsulot GNU loyihasiga tegishli bo'lib, barcha UNIX oilasiga mansub 
tizimlardan tortib iPhone telefonlaridagi dasturlargacha hammasi GCC orqali yig'iladi. Undan 
tashqari GCC erkin tarqatiladigan dastur bo'lib, o'quv muassasalariga juda mos keladi. Shularni 
hisobga olgan holda obyekt fayllarni ulash GCC misolida keltiriladi. Ammo ulovchi yoki C 
kompilyatorini tanlash o'quvchi ixtiyorida. «C kompilyatorlari va obyekt fayllarni ular orqali 
ulash» ilovasida GCC kompilyatorini o'rnatish va undan tashqari Microsoft Visual Studio kabi 
boshqa kompilyatorlardan foydalanishga molik tashkiliy masalalar yoritiladi.
Shunday qilib yuqorida NASM tomonidan yaratilgan obyekt fayl Linuxda quyidagicha ulanadi:
$ gcc birinchi_dastur.o –o natija
Demak, bajaruvchi kod natija nomli yangi faylga joylashtiriladi. Ushbu fayl joriy direktoriyada 
yaratiladi va u quyidagicha ishga tushiriladi:
$ ./natija
Bu yerdagi nuqtqa (.) belgisi joriy direktoriyani anglatadi. Agar hammasi joyida bo'lsa, ekranda 
quyidagilarni korishimiz mumkin:
$ ./natija
Salom, bugun havo yaxshi
Iltimos, ikkita son kiriting :
Shundan so'ng ikkita son kiritilishi kutiladi va natija ekranga chiqariladi.
Windowsda esa yuqoridagi amallar quyidagicha bajariladi:
> gcc birinchi_dastur.obj –o natija.exe
Endi natija.exe bajaruvchi faylini ishga tushiramiz:
> natija.exe
Salom, bugun havo yaxshi
Iltimos, ikkita son kiriting :

Download 494.54 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling