PE2PE64

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 14 мар 2010.

  1. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    litrovith
    Я сейчас весьма не трезв, попробую разобраться в выражении
    завтра.
    А чем лучше юзазть фасм для проганья IA64 я не понял. Разве чтобы ошибок побольше набрать.
     
  2. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    KeSqueer
    >cl.exe подходит только для сборки под x86
    Там разные есть cl.exe же.

    >IA64
    Это Итаник. Не x64.

    Mika0x65
    Ты кладёшь arg4 на то место, которое вызываемая функция использует в качестве когтеточки. Т.е. она не будет искать там аргумент, но может использовать это место по своему усмотрению (для хранения нелетучего регистра, например). С другой стороны, в том месте, где вызываемая функция будет ожидать arg4, у тебя лежит стечный мусор.
    В то же время, никто не может запретить тебе использовать кастомные CC для вызова своих функций, хотя и существует несколько причин, по которым этого стоит избегать (основная – это, вероятно, поддержка раскрутки).
    Конкретно для этого случая весьма подходит этот пост by Scott Noone.
    И, кроме официальной документации, один может почитать об x64 ABI в блоге у FreiK'а, или здесь у Skywing'а.
     
  3. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Вот mingw64 реально надо отдельно качать.
    Причём в gcc я знаю bulean нету =)
    Наверное таких вообще нету первопроходцев кто msdn на сторонних кампилерах собирает,
    но было бы полезно.
     
  4. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Sol_Ksacap
    Верно подмечено, спасибо. Следовало использовать AMD64 раз уж на то пошло.
     
  5. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Чего-чего, а такого там точно нету...
     
  6. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Sol_Ksacap
    Поздновато, конечно, но все же интересно: что я сделал не так? Прочитал статью, все верно, кроме утверждения, что 32 байта отводятся для сохранения rcx, rdx, r8 & r9 -- ф-ия может использовать эти ячейки по своему усмотрению.
     
  7. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Код (Text):
    1. mov rcx, arg0
    2. mov rdx, arg1
    3. mov r8, arg2
    4. mov r9, arg3
    5. push arg4
    6. sub rsp, 0x20
    7. call func
    Упс. У тебя всё верно же. А вот мы почему-то смотрели на это не с той стороны – как если бы "push arg4" и "sub rsp, 20" были поменяны местами. Прими наши извинения. И спасибо за фикс.