Встроенный ассемблер ICC не любит push / pop - PullRequest
1 голос
/ 12 января 2012

Я пытаюсь извинить ассемблер, встроенный в icc в msasm:

int main (void)
{
  __asm{
    mov eax, 5h;  //works
    push eax;     // after shell command /opt/intel/bin/icc -use_msasm asm.c:
                  // asm.c(7): (col. 5) error: Unsupported instruction form in asm                          
                  // instruction push.

   //pop ebp;    // the same 
        };

printf("success!\n");
return 1;
}

Кто-нибудь знает, почему icc не принимает push и pop?

Заранее спасибо!

1 Ответ

1 голос
/ 19 июля 2018

Вместо этого вы должны использовать x64-версию регистров. Поэтому правильная версия должна выглядеть так:

__asm{
    mov rax, 5h;
    push rax;
};

Кроме того, обращайте внимание на различия в архитектуре при работе с указателями, 0x8 ******* и т. Д. Никогда не следует использовать пакетный поиск и замену, не прочитав сначала свой встроенный код.

...