Программирование на JAVA


Рис. 6.9. Вложенные подпрограммы на языке ассемблера IA-32


Рис. 6.10. Стековые фреймы для программы, представленной на рис 6.9. (Вершина стека ESP)

Примеры программ

Программа для вычисления скалярного произведения двух векторов

На рис. 6.11 приведена программа вычисления скалярного произведения двух векторов для процессоров архитектуры IA-32. Начальные адреса этих векторов равны AVEC и BVEC. В программе для доступа к последовательным элементам векторов используется базовая индексная адресация. В качестве индексного ре­гистра применяется регистр EDI. Коэффициент масштабирования равен 4, по­скольку элементы векторов являются двойными словами (4 байта). В качестве счетчика цикла используется регистр ЕСХ, инициализированный значением n. Это позволяет задействовать команду LOOP (см. раздел 5.2), кото­рая сначала уменьшает значение регистра ЕСХ, а затем выполняет условный пе­реход по адресу LOOPSTART, если содержимое регистра ЕСХ не равно нулю. Предполагается, что произведение двух элементов векторов поместится в двой­ное слово, поэтому в команде умножения IMUL явно задан регистр назначения EDX (см. раздел 5.14).



<< назад вперед >>