Dasturni nasm kompilyatori orqali yig'ish uchun buyruqlar qatoriga quyidagi yoziladi
Download 494.54 Kb. Pdf ko'rish
|
11.2-amaliy
- Bu sahifa navigatsiya:
- 5.9. Obyekt fayllarni ulash
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. 17rasm. 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, nasmio.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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling