YAVAY
@YAVAY
Я пожилая креветка

Что делать, если ilasm ругается на синтаксис ldarg.0?

Писал код по примеру из книги "Эндрю Троелсон - язык программирования С# 5.0 и платформа .NET 4.5" (стр. 637-639).
При попытке скомпилировать CIL-код выдаёт ошибку: error : syntax error at token 'ldarg.0' in: ldarg.0
Код писал на Visual Studio Code. Либо я что-то не так делаю или не так компилирую, либо в коде что-то не то. Помогите маслёнку

Мой код:
.assembly extern mscorlib{
    .publickeytoken =  (B7 7A 5C 56 19 34 E0 89 )
    .ver 4: 0:0:0
}

.assembly extern System.Windows.Forms{
    .publickeytoken =  (B7 7A 5C 56 19 34 E0 89 )
    .ver 4:0:0:0
}

.assembly CILCars{
    .ver 1:0:0:0
}
.module CILCars.dll

.namespace CILCar
{
    .class public auto ansi beforefieldinit CILCar
        extends [mscorlib]System.Object
    {
        .field public string petName
        .field public int32 currSpeed

        .method public hidebysig specialname rtspecialname
            instance void .ctor(int32 c, string p) cil managed
        {
            .maxstack 8

            ldarg.0
            call instance void [mscorlib]System.Object::.ctor

            ldarg.0
            ldarg.1

            stfld int32 CILCars.CILCar::.currSpeed

            ldarg.0
            ldarg.2

            stfld string CILCars.CILCar::petName
                
            ret
        }


    }

    .class public auto ansi beforefieldinit CILCarInfo
        extends [mscorlib]System.Object
    {
        .method public hidebysig static void
            Display(class CILCars.CILCar c) cil managed
        {
            maxstack 8;

            .locals init([0] string caption)
            
            ldstr "{0}'s speed is: "
            ldarg.0

            ldfld string CILCars.CILCar::
            call string [mscorlib]System.String::Format(string, object)
            stloc.0

            ldarg.0
            ldflda CILCars.CILCar::currSpeed
            call instance string [mscorlib]System.int32::ToString()
            ldloc.0

            call valuetype [System.Windows.Forms]
                 System.Windows.Forms.DialogResult
                 [System.Windows.Forms]
                 System.Windows.Forms.MessageBox::Show(string, string)
            
            pop
            ret
        }

    }
}


Ошибка при попытке скомпилировать:
5dbb4a07bd1b8196637621.png
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
YAVAY
@YAVAY Автор вопроса
Я пожилая креветка
Я рукожоп код с ошибками переписал
И их достаточно много...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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