проблема с cl.exe и ml.exe - PullRequest
       18

проблема с cl.exe и ml.exe

5 голосов
/ 20 сентября 2011

Я использовал команду cl для компиляции файла cpp:

cl test.cpp  //the generated  test.exe can work well

, затем я использовал другой способ:

cl /Fa /c test.cpp   //generate a test.asm assembly file
ml test.asm   // there failed!!!

почему?Как ее решить?

исходный код:

//:test.cpp 

 #include<iostream>
 using namespace std;
 int main()
  {
    cout<<"hello\n";
  }

неверная информация:

Сборка: test.asm test.asm (1669): фатальная ошибка A1010: нестандартная вложенность блоков

: ?? $? 6U? $ char_trait s @ D @ std @@@ std @@ YAAAV? $ basic_ostream @ DU? $ char_traits @ D @ std @@@ 0 @ AAV10 @PBD @ Z


сегодня я пишу другой код на c

//test.cpp
#include<stdio.h>
void main()
{
  printf("hello");
}

, затем я компилирую код

cl /Fa /c test.cpp
ml test.asm //ok!

Может быть разницав C и C ++.Это смущает меня несколько дней.: (

как это решить? Помогите пожалуйста.

1 Ответ

7 голосов
/ 21 сентября 2011

При создании кода обработки исключений компилятор создает неверный список сборок.В Microsoft Connect есть открытая ошибка: http://connect.microsoft.com/VisualStudio/feedback/details/556051/cl-facs-generates-bad-masm-for-c-exception-handlers

В ответ на ошибку есть нерешительное «мы рассмотрим это исправление» вместе с заявлением об отказе от ответственности, в котором перечислены файлы, сгенерированные C / C ++компилятор для информационных целей ".

Похоже, что вы могли бы иметь возможность" скриптового "решения для этой конкретной проблемы:

  • вырезать оператор ENDP, следующий заtext$x ENDS оператор,
  • вставьте его непосредственно перед предыдущим _TEXT ENDS оператором

По крайней мере, это выглядит как шаблон в файле asm, сгенерированный вашей простой программой - я не наденуне знаю, будет ли этот шаблон в целом.

К сожалению, после применения этого исправления возникает несколько новых проблем с инструкциями, использующими переопределения fs и пару неопределенных символов.Кто знает, с чем еще вы столкнетесь, когда попробуете это с более сложной программой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...