Biz Univeristetdə Assembler dili keçirilir Düzdü keçilir demək olarsa…
Müəllim bizə laboratoriya işi verib 🙂 Kodu nə Linuxda Nə VVindovvsda işlədə bilmədim 🙂 Düzünə qalsa Assembler dilinin çətinliyini qəbul edirəm Amma bu dili öyrənməkdə qərarlıyam…
Birinci Linuxda Assembler kodları necə kompilyasiya olunur?
Mən iki cür edirəm
$as kod.asm -o program.o
və
$nasm -f elf kod.asm
ld -o kod kod.o
./kod
İnternetde çox axtarışlar elədim Orda nümunə şəklində yazılmış bir kod işlədi
Assembler dilində NASM MASM FASM nədir Kimsə Assembler dilində anlayışları var?
Heç kim məsləhət verməyə çalışmasın ki Assembler dilini öyrənmə Qərarlıyam bu dili öyrənəcəm Amma başlanğıcı edə bilmirəm
Verilmiş cavablar və yazılan şərhlər (3 cavab var)
1
İstəyirsən bu linklərə bir göz gəzdir.
http://stackoverflow.com/questions/3314919/compile-run-assembler-in-linux
http://www.forumacil.com/bilgisayar-bilgileri/172172-asm-dosya-uzantisi-assembly-programlama-kaynak-kodu.html
3
Linuxda assembler kodu aşağıdakı kimi kompilyasiya olunur:
əvvəlcə hər hansı mətn redaktorunda deyək ki gedit -də assembler proqramının mətn kodu yığılır, daha sonra assembler proqramı vastəsilə mətn koddan obyekt kod yaradılır, sonuncu mərhələdə isə obyekt koddan linker proqramı vastəsilə icraolunabilən ikili fayl – proqram alınır.
Misal üçün aşağıdakı kodu Linuxda kompilyasiya edək:
Əvvəlcə bu mətni init.s adlı faylda yadda saxlayırıq. Daha sonra terminal proqramını yükləyib həmin faylın yerləşdiyi qovluğa daxil oluruq.
ls əmri ilə qovluqda init.s faylının olduğuna əmin olaq:
[ferid@fedora tmp]$
[ferid@fedora tmp]$ ls
init.s
[ferid@fedora tmp]$
[ferid@fedora tmp]$
Daha sonra as assembler proqramı vastəsilə init.s faylından init.o adlı obyekt fayl yaradırıq
[ferid@fedora tmp]$
[ferid@fedora tmp]$ as init.s -o init.o
[ferid@fedora tmp]$
İndi ls əmri ilə işçi qovluqda olan faylların siyahısına baxsaq init.o adlı yeni faylın yarandığını görərik:
[ferid@fedora tmp]$
[ferid@fedora tmp]$ ls
init.o init.s
[ferid@fedora tmp]$
[ferid@fedora tmp]$
init.o obyekt fayldır. Ondan icraolunabilən (executable) proqram faylı almaq üçün ld linker proqramı vastəsilə onu linkləməliyik. Bunun üçün aşağıdakı əmri daxil edirik:
[ferid@fedora tmp]$
[ferid@fedora tmp]$ ld init.o -o init
[ferid@fedora tmp]$
Yenə ls ilə faylların siyahısına baxsaq yeni bir init faylın yarandığını görərik:
[ferid@fedora tmp]$
[ferid@fedora tmp]$ ls
init init.o init.s
[ferid@fedora tmp]$
[ferid@fedora tmp]$
init bizim proqram faylıdır. Onu icra eləmək üçün ./init əmrini daxil etmək lazımdır:
[ferid@fedora tmp]$
[ferid@fedora tmp]$ ./init
Salam dunya
[ferid@fedora tmp]$
[ferid@fedora tmp]$
Ekranda salam dunya sərti çap olundu. as və ld proqramlarına gəlincə, məncə onlar bir çox linux paylanmalarında sistem ilə birlikdə gəlir. Bunu yoxlamaq üçün terminaldan as -v və ld -v əmrlərini daxil edə bilərsən.
[ferid@fedora tmp]$ as -v
GNU assembler version 2.21.51.0.6 (x86_64-redhat-linux) using BFD version version 2.21.51.0.6-6.fc15 20110118
[ferid@fedora tmp]$
[ferid@fedora tmp]$ ld -v
GNU ld version 2.21.51.0.6-6.fc15 20110118
[ferid@fedora tmp]$
Nasm , fasm , masm bunlar da hamısı assembler proqramlarıdılar, hansı ki as proqramı kimi mətn fayldan obyekt fayl alır. Lakin as bunların içində ən geniş istifadə olunanıdır (GNU/Linux sistemlərində).
Assembler dilini örgənmək üçün düzgün kitab seçmək çox mühümdür. Mənim internetdə izlədiyim bir çox kitablar təəsüf ki, bu dili örgənməyə yaramır. Mən assembler dilini örgənmək üçün Jonathan Bartlett -in Programming from the Ground Up kitabını məsləhət görürəm. Assembler barəsində tanıdığım kitabların içərisində nəinki ən yaxşısıdır, heç ona bənzəyəni yoxdur. Olduqca sadə dildə yaddaşın strukturu, proqramın strukturu, prosessorun reqistrləri, prosessorun yaddaşa müraciət metodları v.s. ətraflı izah olunur, müvafiq proqram kodları ilə birlikdə. Bu kitab başlanğıc səviyyə üçün nəzərdə tutulub. Daha sonra professionallar üçün Intel 80386 Programmer’s Reference Manual pdf , http
məsləhət görülür.
0
Cox sagolun cavablara gore 🙂
Sual verin
Cavab verin