Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите понять макрос 
:(
    Опции темы
Krazyzy
Дата 22.6.2011, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.8.2009

Репутация: нет
Всего: нет



Помогите понять что происходит в макросе

Код

MREGS macro R1, R2
    local I
    PAR1 equ <R1>
    PAR1M = 0
    irp M, <0,1,2,3,4,5,6,7>
        ifidni <MM&&M>, <R1>
            I=M
            irp F, <ax,cx,dx,bx,sp,bp,si,di>
                if I eq 0
                    if @WORDSIZE gt 2
                        PAR1 equ <e&&&F>
                    else
                        PAR1 equ <F>
                    endif
                    PAR1M=1
                    exitm
                endif
                I=I-1
            endm
            exitm
        endif
    endm
    PAR2 equ <R2>
    PAR2M = 0
    irp M, <0,1,2,3,4,5,6,7>
        ifidni <MM&&M>, <R2>
            I=M
            irp F, <ax,cx,dx,bx,sp,bp,si,di>
                if I eq 0
                    if @WORDSIZE gt 2
                        PAR2 equ <e&&&F>
                    else
                        PAR2 equ <F>
                    endif
                    PAR2M=1
                    exitm
                endif
                I=I-1
            endm
            exitm
        endif
    endm
endm

;meta-macro for defining MMX instructions macro
MMXDEF macro OPNAME,OPCODE
    OPNAME macro DST,SRC
        local X,Y  
        &MREGS <DST>,<SRC>
        X:
        if PAR2M
            BSF PAR1, PAR2
        else
            BSF PAR1, @WORDSIZE PTR (PAR2)
        endif
        Y:
        ORG X+1
        DB OPCODE
        ORG Y
    endm
endm


;------------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DB 32 DUP (?)
STACKSG ENDS    
;------------------------------------------------
DATASG SEGMENT PARA 'Data'
;    data
DATASG ENDS
;------------------------------------------------
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR
    ASSUME CS:CODESG, DS:DATASG, SS:STACKSG
    PUSH DS
    SUB AX,AX
    PUSH AX
    MOV AX,DATASG
    MOV DS,ax
    
;    code
    MMXDEF paddd,0FEh
    paddd MM1,MM2
    ;MREGS MM1,MM2
    MOV AH,4CH
    INT 21H

BEGIN ENDP
CODESG  ENDS
END BEGIN

PM MAIL   Вверх
afiskon
Дата 22.6.2011, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: нет
Всего: 4



Объявляет MMX инструкции, не поддерживаемые (по всей видимости) компилятором. Первый аргумент - имя инструкции, второй - опкод

Код

;   определили инструкцию paddd
    MMXDEF paddd,0FEh
;   теперь можем ее использовать
    paddd MM1,MM2

PM MAIL WWW   Вверх
Krazyzy
Дата 22.6.2011, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.8.2009

Репутация: нет
Всего: нет



Ну а что делают эти инструкции?
особенно интересно в чем сакральный смысл этого  
Код

    irp M, <0,1,2,3,4,5,6,7>
        ifidni <MM&&M>, <R1>


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0633 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.