Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Разработка тестов



Для примера реализации операций ++ и -- из лабораторной работы 3 в качестве теста используем следующую последовательность выражений: ++x; y++; -x--; --y; x=-y+++5; x=++y+5; y=--x-5; x=y---5;

Переменная leksema относится к перечислимому типу tipleks и описана в строках 82 – 87 измененного компилятора С0 следующим образом:

82 enum tipleks /* тип лексемы: */

83 {osh,ident,chislo,plus,minus,umn,del,ost,ravn,neravn,men,bol,

84 mravn,bravn,lskob,pskob,zpt,tchzpt,uvel,umen,prisv,

85 flskob,fpskob,ifsl,intsl,retsl,whilesl};

86 enum tipleks leksema; /* текущая лексема */

В соответствии с этим описанием, тип enum tipleks содержит значения 0, 1, 2, …, обозначаемые именами: osh = 0, ident =1, chislo = 2, plus =3, minus = 4, umn = 5, del = 6, ost = 7, ravn = 8, neravn = 9, men = 10, bol = 11, mravn = 12, bravn= 13, lskob = 14, pskob = 15, zpt = 16, tchzpt = 17, uvel = 18, umen = 19, prisv = 20, flskob = 21, fpskob = 22, ifsl = 23, intsl = 24, retsl = 25, whilesl = 26.

При чтении из файла p.c0 разработанного тестового текста

++x; y++; -x--; --y; x=-y+++5; x=++y+5; y=--x-5; x=y---5;

подпрограмма chleks должна выдавать следующую последовательность лексем (в числовой записи): 18, 1, 17, 1, 18, 17, 4, 1, 19, 17, 19, 1, 17, 1, 20, 4, 1, 18, 3, 2, 17, 1, 20, 18, 1, 3, 2, 17, 1, 20, 19, 1, 4, 2, 17, 1, 20, 1, 19, 4, 2, 17.

Если текст теста из файла p.c0 (в отсутствие подпрограммы chleks - в числовом виде) подавать в цикле по одному выражению в подпрограмму virag, то она вместе с подчиненными ей программами должна генерировать в файле p.asm следующий объектный код, условно считая x глобальной переменной, а y – локальной переменной со смещением 2 (записан в три колонки):

; ++x; INC WORD PTR 2[BP] MOV AX,x

INC x PUSH AX PUSH AX

MOV AX,x MOV BX,5 MOV BX,5

; y++; POP AX POP AX

MOV AX,2[BP] ADD AX,BX SUB AX,BX

INC WORD PTR 2[BP] PUSH AX PUSH AX

; -x--; POP AX POP AX

MOV AX,x MOV x,AX MOV 2[BP],AX

NEG AX; x=++y+5;; x=y---5;

PUSH AX INC WORD PTR 2[BP] MOV AX,2[BP]

POP AX MOV AX,2[BP] DEC WORD PTR 2[BP]

DEC x PUSH AX PUSH AX

; --y; MOV BX,5 MOV BX,5

DEC WORD PTR 2[BP] POP AX POP AX

MOV AX,2[BP] ADD AX,BX SUB AX,BX

; x=-y+++5; PUSH AX PUSH AX

MOV AX,2[BP] POP AX POP AX

NEG AX MOV x,AX MOV x,AX

PUSH AX; y=--x-5;

POP AX DEC x





Дата публикования: 2015-03-29; Прочитано: 298 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...