linux-gcc ppc-ppc64 asm проблемка

Тема в разделе "WASM.ASSEMBLER", создана пользователем t1g5r, 1 июл 2008.

  1. t1g5r

    t1g5r New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2008
    Сообщения:
    1
    x86
    Код (Text):
    1.    mov eax, nIndexOfX32
    2.    xor edx, edx
    3.    div nPlainCharsetLen
    4.    mov nIndexOfX32, eax
    5.    mov nTemp, edx
    ppc - ppc64
    Код (Text):
    1.   mr r2, nIndexOfX32
    2.   xor r3, r3, r3
    3.   divwu r3, r2, nPlainCharsetLen
    4.   mr nIndexOfX32, r3
    5.   mullw r3, r3, nPlainCharsetLen
    6.   subf r3, r3, r2
    7.   mr nTemp, r3
    1. суть проблемы во первых в оптимизации куска на ассемблере (ppc-ppc64) по тому что нет опыта работы с asm-ppc

    2. немного не понятна конструкция __asm__ ... в gcc ...
    Код (Text):
    1.         __asm__ __volatile__ (
    2.                 "mr %r2, %2;"
    3.                 "xor %r3,%r3,%r3;"
    4.                 "divwu %r3, %r2, %3;"
    5.  
    6.                 "mr %0, %r3;"
    7.                 "mullw %r3, %r3, %3;"
    8.                 "subf %r3, %r3, %r2;"
    9.                 "mr %1, %r3;"
    10.                 : "=m"(nIndexOfX32), "=m"(nTemp)
    11.                 : "m"(nIndexOfX32), "m"(nPlainCharsetLen)
    12.                 : "%r1", "%r4"
    13.         );