Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Машинно-зависимая и машинно-независимая оптимизация кода ассемблера

Тип Реферат
Предмет Информатика и программирование
Просмотров
838
Размер файла
27 б
Поделиться

Ознакомительный фрагмент работы:

Машинно-зависимая и машинно-независимая оптимизация кода ассемблера

Машинно-зависимая и машинно-независимая оптимизация кода ассемблера

1. Постановка задачи

Лабораторная работа №3: Машинно-зависимая и машинно-независимая оптимизация кода ассемблера.

На языке PASCAL написана следующая программа, предназначенная для определения нечетных чисел находящихся в массиве чисел:

var

res, i: integer;

begin

res:=0;

for i:=1 to 10 do

if i mod 2 <> 0 then

begin

res:=i;

writeln (res);

end;

end.

2. Оптимизация программы

Листинг программы, полученной с помощью программы ALTER, для последующей оптимизации (подчеркнуты строки, измененные в процессе оптимизации):

Turbo Assembler Version 4.1 12/12/08 00:18:57 Page 1

11. ASM

1 0000 .Model Small

2 0000 .Stack 100h

3 0000 .Data

4 0000 FF*(??) __bufrw db 255 dup (?)

5_________________________;_res_____ dw_____?

6_________________________;_i_____ dw_____?

Удалить строки 5 и 6

7 00FF .Code

8 0000 Main proc

9 0000 B8 0000s mov ax,@data

10 0003 8E D8 mov ds, ax

11 ; Присвоить переменной _res

12__________; mov _res, 0_____; Занести в_____переменную _res_____0

Строку 12 заменить на mov ax, 0

13 0005 B8 0000

14 ; Начало цикла FOR №1

15 ; Присвоить переменной _i

16____________________; mov _i, 1_____; Занести в_____переменную _i 1

17____________________; movbx,_i; Записать в BX _i

Строки 16, 17 заменить на movbx, 1

18 0008 BB 0001

19 000BB9 000Amovcx, 10 ; Занести в cx 10

20 000E EB 01 jmp $+3 ; Перейти на 3 байта вперед

21 0010 for_b_1:

22 0010 43 inc bx ; Инкремент BX

23__________; push bx_______________; Записать BX в стек

24_______________; push cx_______________; Записать CX в стек

Строки 23, 24 заменить на push bx cx

25 0011 53 51

26_____; mov _i, bx__________; Записать в переменную _i BX

Удалить строку 26

27 ; Обработка условия №1

28 ; Подготовка левой части условия

29 ; mov ax,_i ; Занести в AX переменную _i

30 0013 8B C3 mov ax, bx

31 0015 53 push bx

32 0016 BB 0002 mov bx, 2 ; Занести в BX 2

33 0019 33 D2 xor dx, dx ; Обнуляем DX

34 001B F7 F3 div bx ; Деление без знака

35 001D 92 xchg ax, dx ; Поменять значение AX и BX

36 001E 8B D8 mov bx, ax ; Записать в bx ax

37 ; Подготовка правой части условия

38 0020 BA 0000 mov dx, 0 ; Занести в dx 0

39 0023 3B DA cmp bx, dx ; Сравнить BX c DX

40 0025 5B pop bx

41 0026 74 0F je else_1

42 ; Присвоить переменной _res

43__________; mov ax,_i__________; Занести в_____AX переменную _i

Заменить на строку mov ax, bx

44 0028 8B C3

45_____; mov _res, ax_____; Занести в_____переменную _res_____AX

Удалить строку 45

46 ; Обработка процедуры WRITE

47__________; mov ax,_res_____; Занести в_____AX переменную _res

Удалить строку 45

48 002A E8 0014 call sl_itoa ; Вызвать функцию преобразования

49 002D B4 02 mov ah, 2 ; Загрузить в AH номер функции

50 002F B2 0D mov dl, 13 ; Выводимый символ

51 0031 CD 21 int 21h ; Вызвать прерывание DOS

52 0033 B2 0A mov dl, 10 ; Выводимый символ

53 0035 CD 21 int 21h ; Вызвать прерывание DOS

54 0037 else_1:

55 ; Переход если не выполнилось условие №1

56__________; pop cx__________; Вернуть из стека в CX

57_______________; pop bx__________; Вернуть из стека в BX

Заменить на строку popcxbx

Turbo Assembler Version 4.1 12/12/08 00:18:57 Page 2

11.ASM

58 0037 59 5B

59 0039 3B D9 cmp bx, cx ; Сравнить BX и CX

60 003B 75 D3 jne for_b_1 ; Переход если не равно

61 ; Конец цикла FOR №1

62 003D B4 4C mov ah, 4ch

63 003F CD 21 int 21h

64 0041 endp

65 0041 sl_itoa proc

66 0041 50 53 51 52 push ax bx cx dx

67 0045 3D 0000 cmp ax, 0

68 0048 7D 0A jge Doit

69 004A 50 push ax

70 004B B2 2D mov dl, '-'

71 004D B4 02 mov ah, 2

72 004F CD 21 int 21h

73 0051 58 pop ax

74 0052 F7 D8 neg ax

75 0054 E8 0011 DoIt: call puti2

76 0057 5A 59 5B 58 pop dx cx bx ax

77 005B C3 ret

78 005C sl_itoa endp

79

80 005C sl_utoa proc

81 005C 50 53 51 52 push ax bx cx dx

82 0060 E8 0005 call PutI2

83 0063 5A 59 5B 58 pop dx cx bx ax

84 0067 C3 ret

85 0068 sl_utoa endp

86

87 0068 Puti2 proc

88 0068 BB 000A mov bx, 10

89 006B 33 D2 xor dx, dx

90 006D F7 F3 div bx

91 006F 0B C0 or ax, ax

92 0071 74 05 jz Done

93 0073 52 push dx

94 0074 E8 FFF1 call Puti2

95 0077 5A pop dx

96 0078 Done:

97 0078 80 CA 30 or dl, '0'

98 007B B4 02 mov ah, 2

99 007D CD 21 int 21h

100 007F C3 ret

101 0080 PutI2 endp

102

103 end Main

Turbo Assembler Version 4.1 12/12/08 00:18:57 Page 3

Symbol Table

Symbol Name Type Value

?? DATE Text «12/12/08»

?? FILENAME Text «11 »

?? TIME Text «00:18:56»

?? VERSION Number 040A

@32BIT Text 0

@CODE Text _TEXT

@CODESIZE Text 0

@CPU Text 0101H

@CURSEG Text _TEXT

@DATA Text DGROUP

@DATASIZE Text 0

@FILENAME Text 11

@INTERFACE Text 000H

@MODEL Text 2

@STACK Text DGROUP

@WORDSIZE Text 2

DOIT Near _TEXT:0054

DONE Near _TEXT:0078

ELSE_1 Near _TEXT:0037

FOR_B_1 Near _TEXT:0010

MAIN Near _TEXT:0000

PUTI2 Near _TEXT:0068

SL_ITOA Near _TEXT:0041

SL_UTOA Near _TEXT:005C

__BUFRW Byte DGROUP:0000

Groups & Segments Bit Size Align Combine Class

DGROUP Group

STACK 16 0100 Para Stack STACK

_DATA 16 00FF Word Public DATA

_TEXT 16 0080 Word Public CODE


3. Машинно-зависимая оптимизация кода ассемблера

Машинно-зависимая оптимизация предполагает:

1) Использование регистров процессора вместо ячеек оперативной памяти.

2) Использование непосредственно заданных операндов.

3) Использование косвенной адресации, когда операнд хранит адрес операнда.

4) Ограничение использования стека.

программа оптимизация ассемблер код

4. Машинно-независимая оптимизация кода ассемблера

Машинно-независимая оптимизация предполагает:

1. Одним из важнейших источников оптимизации кода является удаление общих подвыражений, т.е. подвыражений, которые встречаются в нескольких местах программы и вычисляют одно и то же выражение.

2. Другим источником оптимизации кода является удаление инвариантов цикла. Так называются подвыражения внутри цикла, результирующие значения которых не изменяются внутри цикла при переходе от одной итерации к другой. Поскольку для большинства программ основное время работы приходится на выполнение циклов, экономия времени от подобной оптимизации может быть весьма существенной.

3. Еще один источник оптимизации кода состоит в замене менее эффективных операций на более эффективные.

Выводы

До оптимизации исполняемый файл составлял 660 байт, а после оптимизации 640 байт.

В ходе оптимизации были произведены следующие действия:

– вместо переменных i, resиспользуются регистры ax, bx, что является машинно-зависимой оптимизацией.

– удаление общих подвыражений, были объединены такие строки, как

popсx

popbx

в одну – popсxbx;

push cx

push bx

водну– push bx cx;

После проведенной оптимизации программа полностью сохранила свой смысл.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Филиал государственного бюджетного образовательного учреждения высшего образования Московской област
Спасибо Елизавете за оперативность. Так как это было важно для нас! Замечаний особых не бы...
star star star star star
РУТ
Огромное спасибо за уважительное отношение к заказчикам, быстроту и качество работы
star star star star star
ТГПУ
спасибо за помощь, работа сделана в срок и без замечаний, в полном объеме!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно