Кодогенерация C->asm

Тема в разделе "WASM.BEGINNERS", создана пользователем rainman, 21 янв 2007.

  1. rainman

    rainman New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2007
    Сообщения:
    2
    Плз, объясните, или дайте ссылку на документацию, которая позволит понять следующий пример генерации кода:

    gcc -O3 -S из
    Код (Text):
    1. double foo()
    2. {
    3. double res, x, y, z;
    4. res = x*y*z;
    5. return res;
    6. }
    генерит вот такое чудо:

    Код (Text):
    1. mulsd %xmm0, %xmm0
    2. mulsd %xmm0, %xmm0
    3. ret
    Очень хочется разобраться, как и в каком порядке переменные оказываются в xmm-регистрах без участия человека :)
     
  2. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ты же их не инициализировал, начальные значения пременных не определены
    и в xmm тоже непонятно что, и результат нигде не используется
    так что gcc просто превращает это в две операции умножения, как напианно в коде, не задумываясь над тем, что и на что умножать