Ограничения Intel Assembly Syntax Compared to AT&T [закрываются]

Если вы используете шаблон проекта по умолчанию, UserManager создается следующим образом:

В файле Startup.Auth.cs есть такая строка:

app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);

, который заставляет конвейер OWIN создавать экземпляр экземпляра ApplicationUserManager каждый раз, когда запрос поступает на сервер. Вы можете получить этот экземпляр из конвейера OWIN, используя следующий код внутри контроллера:

Request.GetOwinContext().GetUserManager<ApplicationUserManager>()

Если вы внимательно посмотрите на свой класс AccountController, вы увидите следующие фрагменты кода, которые делают доступ к ApplicationUserManager возможно:

    private ApplicationUserManager _userManager;

    public ApplicationUserManager UserManager
    {
        get
        {
            return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        private set
        {
            _userManager = value;
        }
    }

Обратите внимание, что в случае, когда вам нужно создать экземпляр класса ApplicationUserManager, вам нужно использовать статический метод ApplicationUserManager.Create, чтобы у вас были применены соответствующие настройки и конфигурация к нему.

78
задан Josh Caswell 16 June 2017 в 13:24
поделиться

3 ответа

На самом деле у одного нет преимущества перед другим. Я согласен с тем, что синтаксис Intel намного легче читать. Имейте в виду, что, AFAIK, все инструменты GNU также могут использовать синтаксис Intel.

Похоже, вы можете заставить GDB использовать синтаксис Intel следующим образом:

set disassembly-flavor intel

GCC может использовать синтаксис Intel с помощью -masm = Intel .

72
ответ дан 24 November 2019 в 10:28
поделиться

Основной синтаксис для ассемблера GNU (GAS) - AT&T. Синтаксис Intel - относительно новое дополнение к нему. Сборка x86 в ядре Linux имеет синтаксис AT&T. В мире Linux это общий синтаксис. В мире MS синтаксис Intel более распространен.

Лично я ненавижу синтаксис AT&T . Существует множество бесплатных ассемблеров (NASM, YASM), а также GAS, которые также поддерживают синтаксис Intel, поэтому не возникнет проблем с синтаксисом Intel в Linux.

Помимо этого, это просто синтаксическая разница. Результатом обоих будет одинаковый машинный код x86.

40
ответ дан 24 November 2019 в 10:28
поделиться

Это «тот же язык», поскольку он компилируется в один и тот же машинный код, имеет те же коды операций и т. Д. С другой стороны, если вы вообще используете GCC, вы будете вероятно, захочу изучить синтаксис AT&T только потому, что он установлен по умолчанию - не нужно менять параметры компилятора и т. д., чтобы получить его.

Я тоже порезал зубы на Intel-синтаксисе x86 ASM (в том числе и в DOS) и нашел его более интуитивным изначально при переходе на C / UNIX. Но как только вы изучите AT&T, это будет выглядеть так же просто.

Я бы не стал так много думать - выучить AT&T легко, если вы знаете Intel, и наоборот. Реальный язык гораздо сложнее понять, чем синтаксис. Поэтому в любом случае просто сосредоточьтесь на одном, а затем изучите другой, когда он появится.

21
ответ дан 24 November 2019 в 10:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: