Что означает .LC0: .long в ассемблере?

Тема в разделе "WASM.BEGINNERS", создана пользователем 2Hard2Forget, 23 сен 2018.

  1. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    86
    На этот вопрос я пытался найти ответ на stackoverflow , но внятного ответа не получил.
    Изучаю ассемблерный код одной программы на Си вот её кусок
    i3 = 1 + 2;
    flt_1 = 2.4 + 6.3;
    i2 = 5;

    А в ассемблере это выглядит таким образом:
    movl $3, i3(%rip)
    movsd .LC0(%rip), %xmm0
    movsd %xmm0, flt_1(%rip)
    movl $5, i2(%rip)

    Понимаю,что это AT&T синтаксис и вижу регистры для чисел с плавающей точкой.
    Но не понимаю, почему у переменной стоит в скобках регистр.Просто это похоже на аналогию смещения -16(%rbp).Так ли это?
    Не понимаю, почему вдруг появилась метка с всё теми же скобками, если перейти по ней , видно следующее:
    .LC0:
    .long 1717986918
    .long 1075930726
    .align 8

    Что это означает ? И ещё один вопрос:EDX:EAX что это означает?
    Ещё один вопрос возник:
    Не могу понять,что будет делать эта команда
    leal (%rax,%rdx),%ecx
    К чему эти скобки,что происходит внутри них.Похоже ли это на ivector4[ i ] = i*2; , ассемблерный код которого выглядит так ivector4(%eax,%eax)? В чём суть той команды lea со скобками и самих этих скобок в lea и ivector ?
     
    Последнее редактирование: 23 сен 2018
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    .LC0 очевидно метка для адресации относительно rip, .long это DWORD, то же самое что dd 1717986918. Сишные типы в ассемблере, кому-то такое в голову пришло.

    Почему здесь метка и rip:
     
    Последнее редактирование: 23 сен 2018
  3. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    leal (%rax,%rdx),%ecx = lea ecx,[eax+edx]
    ivector4(%eax,%eax) lea <>,[eax + eax], аналог lea <>,[eax*2]
    Это по-моему не совсем ассемблер, а описание конкретных форматов инструкций тупо макросами или что там у них.
     
    2Hard2Forget нравится это.