• 4.6-rasm. Motorola 680x0 assemblerida N = I + J ifodani hisoblash.
  • 4.7-rasm. UltraSPARC assemblerida N = I + J ifodani hisoblash.
  • FORMULA, I, J va N
  • -rasm. Pentium 4 assemblerida N = I + J ifodani hisoblash




    Download 82,19 Kb.
    bet2/2
    Sana20.05.2024
    Hajmi82,19 Kb.
    #246191
    1   2
    Bog'liq
    9-Maruza

    4.5-rasm. Pentium 4 assemblerida N = I + J ifodani hisoblash.



    FORMULA:

    MOVE.L
    ADD.L
    MOVE.L

    I.DO
    J.DO
    DO.N

    :Registr DO=1
    :Registr DO=I+J
    N=I+J

    I

    DC.L

    3

    4 bayt ajratish va ularga 3 qiymatini yozish

    J

    DC.L

    4

    4 bayt ajratish va ularga 4 qiymatini yozish

    N

    DC.L

    0

    4 bayt ajratish va ularga 0 qiymatini yozish



    4.6-rasm. Motorola 680x0 assemblerida N = I + J ifodani hisoblash.

    FORMULA:

    SETHI
    LD
    SETHI
    LD
    NOP
    ADD
    SETHI
    ST

    %HI(I).%R1
    [%R1+%LO(I)].%R1
    %HI(J).%R2
    LD[%R2+LO(J)].%R2

    %R1,%R2,%R2


    %HI (N), %R1
    %R2.[%R1+%LO(N)]

    R1=I adresning katta bitlari
    R1=I
    R2=I adresning katta bitlari
    R2=J
    J-ni xotiradan olib yozilishini kutish
    R2=R1+R2
    R1=N adresining katta bitlari

    I

    . WORD

    3

    4 bayt ajratish va ularga 3 qiymatini yozish

    J

    . WORD

    4

    4 bayt ajratish va ularga 4 qiymatini yozish

    N

    . WORD

    0

    4 bayt ajratish va ularga 0 qiymatini yozish

    4.7-rasm. UltraSPARC assemblerida N = I + J ifodani hisoblash.
    Assembler operatorlari to‘rtta qismdan iborat yozuvlar qatori ko‘rinishida bo‘ladi: metkalar, amallar, operandalar va izohlar. Metkalar asosiy xotira adreslarini simvollarda ifodalangan nomlari sifatida ishlatiladi. Ular yordamida buyruqlar va ma’lumotlarga o‘tish amalga oshirladi, ya’ni asosiy xotiraning buyruqlar va ma’lumotlar saqlandigan joyiga (adresiga) murojaat qilish mumkin bo‘ladi. Agar operatorga ham metka qo‘yiladigan bo‘lsa, u qatorning boshlanishida yoziladi. Keltirilgan misollarning mohiyatini, ulardan birinchisi asosida ko‘rib chiqamiz. Ushbu va keyingi misollarda ham, birinchi qatorda yozilgan FORMULA, I, J va N lar – metkalar hisoblanadi. Keyingi qatorda buyruqlar – MOV, ADD va direktivalar – DD joylashgan. Uchinchi qatorda protsessorning ichki registrlari va o‘zgaruvchilarning nomlari, to‘rtinchi qatorda esa izohlar keltirilgan. Ko‘rilayotgan birinchi misolda Pentium 4 protsessorining asosiy ichki registri hisoblangan EAX registridan foydalanilgan (3.13-rasmga qaralsin). Bunda avval I o‘zgaruvchini EAX registriga yozib olish buyrug‘i – MOV EAX, I, keyin esa EAX registri qiymatiga J o‘zgaruvchini qo‘shish buyrug‘i – ADD EAX, J va EAX registrida hosil bo‘lgan natija N ning qiymatini xotiraga qaytib yozish buyruqlari - MOV N, EAX lar keltirilgan. Oxirigi uchta qatorda I, J va N lar uchun asosiy xotiradan 32-razryadli so‘z uzunligidagi joylar ajratish direktivalari keltirilgan. Direktiva deganda – assemblerning o‘zi uchun mo‘ljallangan buyruqlar tushuniladi. Quyidagi 4.1-jadvalda Pentium 4 protsessori assembleri deriktivalarining ba’zilari keltirilgan.
    4.1-jadval. Pentium 4 protsessori assembleri deriktivalari.



    Direktiva

    Tavsifi

    SEGMENT

    Ma’lum bir tashkil etuvchilardan iborat yangi segmentning (matn, ma’lumotlar va h.k.) boshlanishi

    ENDS

    Navbatdagi segmentining tugashi

    ALIGN

    Keyingi buyruqni yoki ma’lumotlarni joylashtirishni boshqarish

    EQU

    Berilgan ifodagi teng bo‘lgan yangi simvolni aniqlash

    DB

    Bitta yoki bir nechta baytlar uchun xotiralardan joy ajratish

    DW

    Bitta yoki bir nechta 16 razryadli so‘zlar uchun xotiralardan joy ajratish

    DD

    Bitta yoki bir nechta 32 razryadli so‘zlar uchun xotiralardan joy ajratish

    Motorola 680x0 va UltraSPARC protsessorlari uchun yozilgan dasturlar Pentium 4 protsessori uchun yozilgan dasturdan, ulardagi belgilar va nomlarning bir oz farq qilishi bilan ajralib turadilar. Masalan Motorola 680x0 protsessorlarida ichki registlar D0, D1, D2 deb, UltraSPARC protsessorlarida esa %R1, %R2 deb belgilangan. Ko‘chirib yozish buyruqlari esa – MOVE, LD, ST qisqartmalar kabi belgilangan. Makroslar. Dasturlarda ba’zi buyruqlar ketma-ketligi, bir-necha marta qaytarilish hollari ko‘p uchraydi. Assembler tilida bunday ketma-ketliklarni biron-bir nom bilan belgilab, ularni keyingi qaytarilish joylarida, o‘sha nom bilan yana ishlatish mumkin bo‘ladi. Ana shunday nomlangan buyruqlar ketma-ketligi – makros deb ataladi. Quyida Pentium 4 protsessori uchun yozilgan assembler dasturi keltirilgan. Unda P va Q o‘zgaruvchilar qiymatlari joylarini o‘zaro, ikki marotaba almashtirish talab etiladi. Bunda buyruqlarning asosiy ketma-ketligi quyidagicha bo‘ladi:


    MOV EAX.P
    MOV EBX.Q
    MOV Q.EAX
    MOV P.EBX
    P va Q o‘zgaruvchilar qiymatlari joylarini o‘zaro, makrossiz ikki marotaba almashtirish quyidagicha amalga oshiriladi:
    MOV EAX.P
    MOV EBX.Q
    MOV Q.EAX
    MOV P.EBX

    MOV EAX.P


    MOV EBX.Q
    MOV Q.EAX
    MOV P.EBX
    Ushbu ketma-ketlikni SWAP nomli makros deb belgilasak, P va Q o‘zgaruvchilar qiymatlari joylarini o‘zaro, ikki marotaba almashtirish dasturini quyidagicha yozish mumkin:
    SWAP MACRO
    MOV EAX.P
    MOV EBX.Q
    MOV Q.EAX
    MOV P.EBX
    ENDM

    SWAP

    SWAP
    Makroslar – makrosning nomi, makros tarkibiga kirgan buyruqlar va makrosning tugash joyini bildiruvchi ENDM, direktivasidan iborat bo‘ladi. Quyidagi misollarda makroslarda ishtirok etadigan o‘zgaruvchilar har-xil bo‘lganda, qanday yo‘l tutilishi ko‘rsatilgan. Bunday makroslar parametrlarga ega makroslar deb ataladi.
    MOV EAX.P CHANGE MACRO P1.P2
    MOV EBX.Q MOV EAX.P1
    MOV Q.EAX MOV EBX.P2
    MOV P.EBX MOV P2.EAX
    MOV P1.EBX
    ENDM
    MOV EAX.R
    MOV EBX.S CHANGE P.Q
    MOV S.EAX
    MOV R.EBX CHANGE R.S
    Assembler tilida yozilgan dasturlarni mashina kodlariga o‘tkazish – translyasiya qilish ikki o‘tishda (rus tilida – проход) amalga oshiriladi. Birinchi o‘tishda dasturda ishtirok etadigan barcha simvollar ketma-ketliklariga – metkalar va o‘zgaruvchilarning nomlariga mos keladigan simvollar jadvali tuzib olinadi. Simvollar jadvalini tuzish jarayonida, dastur bajarilayotgan paytda metkalarga to‘g‘ri keladigan asosiy xotira adreslarini aniqlab olish amalga oshiriladi. Dastur bajarilayotgan paytda bu adreslar buyruqlar adresi sanagichiga – ILCga (Instruction Location Counter, rus tilida – счетчик адресов команд) yozib boriladi. Quyida keltirilgan misolda, izohlar yoziladigan qismining oxirigi qatorida aynan buyruqlar adresi sanagichining qiymatlari ko‘rsatilgan. Ushbu qatordan chapda joylashgan raqamlar qatori esa, har bir buyruq asosiy xotiraning nechtadan baytini egallayotganligi ko‘rsatilan.



    MARIA

    MOV
    MOV

    EAX.I
    EBX.J

    :EAX=I
    :EBX=J

    5
    6

    100
    105

    ROBERTA

    MOV
    IMUL
    IMUL
    IMUL

    ECX.K
    EAX.EAX
    EBX.EBX
    ECX.ECX

    :ECX=K
    EAX=I*I
    EBX=J*J
    ECX=K*K

    6
    2
    3
    3

    111
    117
    119
    122

    MARILYN

    ADD
    ADD

    EAX.EBX
    EAX.ECX

    EAX=I*I+J*J
    EAX=I*I+J*J+K*K

    2
    2

    125
    127

    STEPHANY

    JMP

    DONE

    DONE ga o‘tish

    5

    129

    Keltirilgan dastur uchun hosil qilingan simvolli nomlar jadvali.





    Simvolli nomlar

    Qiymatlari

    Boshqa ma’lumotlar

    MARIA

    100




    ROBERTA

    111




    MARILYN

    125




    STEPHANY

    129




    Ikkinchi o‘tishda esa ob’yektli dasturni (rus tilida – объектная программа) hosil qilish va assembler protokolini bosmaga chiqarish amalga oshiriladi.


    Ko‘pgina dasturlar bittadan ortiq muolajalardan (rus tilida – процедуры) iborat bo‘ladi. Alohida-alohida translyasiya qilingan dasturlarni birlashtirib, bitta butun bajariladigan ikkilik kodga aylantirish vazifasini joylashtiruvchi dastur (rus tilida – компоновщик) amalga oshiradi (4.8-rasm).


    4.8-rasm. Dasturni translyasiya qilish va joylashtirish.



      1. Assemblerlash jarayoni

    Assembler operatorlari to‘rtta qismdan iborat yozuvlar qatori ko‘rinishida bo‘ladi: metkalar, amallar, operandalar va izohlar.
    Metkalar asosiy xotira adreslarini simvollarda ifodalangan nomlari sifatida ishlatiladi. Ular yordamida buyruqlar va ma’lumotlarga o‘tish amalga oshiriladi, ya’ni asosiy xotiraning buyruqlar va ma’lumotlar saqlandigan joyiga (adresiga) murojaat qilish mumkin bo‘ladi.
    Agar operatorga ham metka qo‘yiladigan bo‘lsa, u qatorning boshlanishida yoziladi.
    Keltirilgan misollarning mohiyatini, ulardan birinchisi asosida ko‘rib chiqamiz. Ushbu va keying misollarda ham birinchi qatorda yozilgan, FORMULA, I, J va N lar – metkalar hisoblanadi.
    Keyingi qatorda buyruqlar - MOV, ADD va direktivalar – DD joylashgan. Uchinchi qatorda protsessorning ichki registrlari va o‘zgaruvchilarning nomlari, to‘rtinchi qatorda esa izohlar keltirilgan. Assembler tilida yozilgan dasturlarni mashina kodlariga o‘tkazish – translyasiya qilish ikki o‘tishda amalga oshiriladi.
    Birinchi o‘tishda dasturda ishtirok etadigan barcha simvollar ketma- ketliklariga – metkalar va o‘zgaruvchilarning nomlariga mos keladigan simvollar jadvali tuzib olinadi. Simvollar jadvalini tuzish jarayonida, dastur bajarilayotgan paytda metkalarga to‘g‘ri keladigan asosiy xotira adreslarini aniqlab olish amalga oshiriladi.
    Dastur bajarilayotgan paytda bu adreslar buyruqlar adresi sanagichiga ILCga (Instruction Location Counter) yozib boriladi.
    Download 82,19 Kb.
    1   2




    Download 82,19 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    -rasm. Pentium 4 assemblerida N = I + J ifodani hisoblash

    Download 82,19 Kb.