Sırf marağımdan soruşuram, maşın dili ilə hansı avadanlıqlara əmrlər göndərmək mümkün olar? və birdə kompyuterdə maşın dilini necə çalışdırmaq olar.Nümunə kodlar tapmışam internetdən ancaq necə çalışdıracağımı bilmirəm
Sırf marağımdan soruşuram, maşın dili ilə hansı avadanlıqlara əmrlər göndərmək mümkün olar? və birdə kompyuterdə maşın dilini necə çalışdırmaq olar.Nümunə kodlar tapmışam internetdən ancaq necə çalışdıracağımı bilmirəm
Verilmiş cavablar və yazılan şərhlər (3 cavab var)
1
Maşın dilinə aid tapdığınız kodlardan nümunə bir hissə bura yerləşdirə bilərsiniz?
Mənə elə gəlir ki siz assembler kodu ilə maşın dilini səhv salmısınız. Maşın dilinin əlifbasında cəmi iki simvol var 0 və 1. Yəni maşın dilində istənilən mətn (icraolunabilən fayl, məlumat faylı v.s.) 0 və 1 -lər ardıcıllığından ibarət olur.
“0101001101100001011011000110000101101101” – Maşın dilində “Salam” deməkdir.
0
Tapdığım kod ekrana hello world yazdırır və ancağ 0-1 lərdən ibarətdi.Sadəcə necə çalışdıracağımı bilmirəm
1
Ikili kod prosessor tərəfindən icra olunur. Ümumiyyətlə icraolunabilən nə varsa hamısı prosessor tərəfindən yerinə yetirilir. Qalır bu kodu prosessora düzgün bir şəkildə çatdırmaq ki, bu iş də əməliyyatlar sisteminin üzərinə düşür. Yəni ikili formada təqdim olunan mətn yaddaşda hansı ünvana yüklənməlidi, instruksiyalar hissəsi mətndə(ikili) hansı sürüşmədə yerləşir(offset), məlumatlar hissəsi hansı sürüşmədə yerləşir, kod hansı arxitekturalı prosessor üçün nəzərdə tutulub v.s. Bütün bu məlumatlar icraolunabilən kod ilə birlikdə kompilyator tərəfindən generasiya olunur müvafiq əməliyyatlar sistemi üçün və adlanır proqramın ikili faylı. Yuxarıda sadaladığım məlumatlar adətən bu ikili faylın əvvəlinə yerləşdirilir- başlıq hissəsinə (header). Bütün proqramları çalışdırmaq üçün ya terminaldan (kansol) proqramın adını daxil edirik( ikili kod yerləşən qovludan), ya da daha sadə üzərində iki dəfə klik edirik. Əməliyyatlar sistemi hər-hansı faylın icraolunması əmrini alar-almaz ilk yoxladığı onun başlıq hissəsi olur (header). Əgər sistem faylın tipini tanıyırsa onda onu oxuyur, kod və data hissələrini tələb olunan ünvanlara yükləyir və prosessorun instruksiya və məlumat reqistrlərini müvafiq ünvanlara kökləyir, əks halda sistem faylı icra etməkdən imtina edir(fayl format not recognized). Misal üçün siz Linux üçün kompilyasiya olunmuş faylı Windowsda icra edə bilmərsiniz.
Siz aşağıdakı kimi yoxlaya bilərsiz. Ən yaxşı halda sizdə olan ikili fayl kompilyator tərəfindən generasiya olunub. Bu halda onu dügün bir şəkildə bir fayla köçürüb sonunu .exe ilə vermək lazımdır. Daha sonra adi proqram kimi yükləyin. Alınmasa ancaq iki faylın özünü araşdırmaq tələb olunur ki görək onun içində olan nə məlumatdır, hansı sistem üçündür v.s. ikili mətni (0 və 1-lər ardıcıllığını) adi mətn faylına kopi-pəst edib .exe kimi yadda saxlasanız heçnə alınmayacaq. Bunu ancaq başqa proqramın köməyilə etmək lazımdır. Yəni ayrı bir proqram qurmalısınız verilmiş 0 və 1 -lər ardıcıllığını ikili şəkildə fayla yazsın.
Sual verin
Cavab verin