Вопрос

No comments
  • Yason и другие участники форума, пока всё! Спасибо! Разобрался что к чему!
  • Ужос то какой...

    Если в регистре, то

    bswap eax
    ror eax, 8

    Если в памяти, то

    mov al, [pointer]
    xchg [pointer+2], al
    mov [pointer], al
  • [quote="Pathoswithin"]Ужос то какой...

    Если в регистре, то

    bswap eax
    ror eax, 8

    Если в памяти, то

    mov al, [pointer]
    xchg [pointer+2], al
    mov [pointer], al[/quote]

    Во-первых, я не мастер оптимизаций. Во-вторых оптимизировать налету, не умею. Во-вторых, последним постом, я оптимизировал по скорости, пому как, предпочитаю скорость.

    mov eax, dword [pixel_color1]
    rol eax, 8
    mov [pixel_color2], dword eax

    Два обращения к памяти будут работать быстрее, чем твои 3. Но спорить не собираюсь - каждый пишет, кому как нравится.
  • И кто, как умеет.
  • Твой последний вообще не правильный, получится 4,1,2,3.
    Тогда уж будет

    mov eax, [pixel_color1]
    bswap eax
    ror eax, 8
    mov [pixel_color2], eax
  • Или

    mov eax, [pixel_color1]
    rol eax, 8
    bswap eax
    mov [pixel_color2], eax
  • Так я в начале так и писал, только не оптимизировал. И ещё писал, что непомню где альфа канал распологается, и напмсал код в соответствии со своим предположением.
  • Если б, знал бы точно, где альфа конал находится (так как не помню, а выяснять бало лень), написал бы правильно. Я ALEXS1983 просто набор команд дал, которыми можно оперировать, а там пусть сам решает, что ему лучше.
  • Ребята не спорьте! Я уже решил ту проблему!... и уже отписал об этом!
  • Прошу помощи!
    Вот процедура которая инициализирует таблицу адресами процедур для Case of , точнее говоря вырезка из таблицы

    ;Инициализация таблицы Case of
    ;= Таблица Case of
    adrs rd 256
    init_table_in_case_opcode:
    mov[adrs+(4*0)],C00
    .........................
    .........................
    mov[adrs+(4*11)],C0B
    .........................
    .........................
    mov[adrs+(4*29)],C1D
    mov[adrs+(4*30)],C1E
    mov[adrs+(4*40)],C28
    .........................
    .........................
    mov[adrs+(4*41)],C29
    mov[adrs+(4*42)],C2A
    mov[adrs+(4*253)],CFD
    mov[adrs+(4*254)],CFE
    mov[adrs+(4*255)],CFF
    ret
    ;/конец = Таблица Case of


    Вот процедура вызывающая соответствующую процедуру в зависимости от значения opcode.
    (Каждая вызываемая процедура из таблицы заканчивается pop ebx ret)

    i8080_do_opcodes_case_opcode_of:
    push ebx
    mov ebx,eax
    mov eax,[opcode]
    jmp dword [eax*4+adrs]

    Правильно ли это реализовано ?
  • Хочу дебагить свою программу. как значение регистра выводить в форму ?
  • Допустим нужно реализовать вот такое:

    1. ВРЕМЯ=0
    2. выполнить процедуру
    3. пока ВРЕМЯ<=20/1000 секунды — отдавать ресурсы другим приложения ну или пустой цикл, иначе идём дальше п.4.
    4............

    КАКУЮ ПРОЦЕДУРУ ИСПОЛЬЗОВАТЬ ДЛЯ РЕАЛИЗАЦИЯ ТАКОГО ?
    Проблема в том что в Функция 5 (пауза) там есть миллисекунды, но это не совсем то, что нужно. А в Функция 3 (получить системное время) нет миллисекунд.
    Чего я не знаю ? Что я не понимаю ?
  • Есть ещё функция 26.9
  • А вот кто мне скажет, разъяснит, что это за тема такая пошла, что пишется
    "
    GSoC students, march 25 is a deadline for submitting final proposals.
    Note: because of students' traditions in time management, GSoC site might fall on the last day and be unavailable. Beware and hurry!
    "
    Что это вообще такое с чем его едят ? :-) Акция какая-то ? Да и в чате чего-то там об этом пишется....
    Где об этом можно почитать на РУССКОМ языке ?
  • Who is online

    Users browsing this forum: No registered users and 4 guests