• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Chạy chương trình tạo bằng IlAsm bị lỗi

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Điều hành viên: tungblt, vuathongtin

khoaph
Thành viên chính thức
Thành viên chính thức
Bài viết: 34
Ngày tham gia: T.Ba 08/12/2015 12:57 pm
Been thanked: 4 time

Chạy chương trình tạo bằng IlAsm bị lỗi

Gửi bàigửi bởi khoaph » T.Ba 17/05/2016 7:17 am

Vừa qua mình có xem qua trang Introduction to IL Assembly Language và copy code trong ví dụ về chạy thử. Biên dịch thì thành công nhưng khi chạy thì báo lỗi sau
ilmustcloseerror1.PNG
ilmustcloseerror1.PNG (10.12 KiB) Đã xem 229 lần

click Debug thì hiện
ilmustcloseerror2.PNG
ilmustcloseerror2.PNG (13.96 KiB) Đã xem 229 lần

ai biết nguyên do lỗi trên thì chỉ cho mình với, thanks.
Code ví dụ 1
MathLib.il

Mã: Chọn hết

.assembly extern mscorlib {}
.assembly MathLib
{
    .ver 1:0:1:0
}

.module MathLib.dll

.namespace HangamaHouse
{   
    .class public ansi auto MathClass extends [mscorlib]System.Object
    {
       
        .method public int32 GetSquare(int32) cil managed
        {
            .maxstack 3
            ldarg.0        //Load the Object's 'this' pointer on the stack
            ldarg.1
            ldarg.1
            mul
            ret       

        }
    }
}

UseMathLib.il

Mã: Chọn hết

.assembly extern mscorlib {}
.assembly extern MathLib {.ver 1:0:1:0}
//
//rest code here
//
.method static void    Main() cil managed
{
    .maxstack 2
    .entrypoint
    .locals init (valuetype [MathLib]HangamaHouse.MathClass mclass)
           
    ldloca mclass
    ldc.i4 5
    call instance int32 [MathLib]HangamaHouse.MathClass::GetSquare(int32)
    ldstr "The Square of 5 Returned : "
    call void [mscorlib]System.Console::Write(string)
    call void [mscorlib]System.Console::WriteLine(int32)

    ret
}


code ví dụ 2

Mã: Chọn hết

.namespace MyForm
{
  .class public TestForm extends
       [System.Windows.Forms]System.Windows.Forms.Form
  {
    .field private class [System]System.ComponentModel.IContainer components
    .method public static void Main() cil managed
    {
      .entrypoint
      .maxstack  1
           
      //Create New Object of TestForm Class and Call the Constructor     
      newobj     instance void MyForm.TestForm::.ctor()
      call       void [System.Windows.Forms]
          System.Windows.Forms.Application::Run(
          class [System.Windows.Forms]System.Windows.Forms.Form)
      ret
    }
   .method public specialname rtspecialname instance
    void  .ctor() cil managed
{
  .maxstack  4

  ldarg.0
 //Call Base Class Constructor
  call       instance void [System.Windows.Forms]
                    System.Windows.Forms.Form::.ctor()

  //Initialize the Components
  ldarg.0
  newobj   instance void [System]System.ComponentModel.Container::.ctor()
  stfld    class [System]System.ComponentModel.IContainer
                    MyForm.TestForm::components

  //Set the Title of the Window (Form)
  ldarg.0
  ldstr      "This is the Title of the Form...."
  call   instance void [System.Windows.Forms]
                   System.Windows.Forms.Control::set_Text(string)

  //Set the Back Color of the Form
  ldarg.0
  ldc.i4 0xff
  ldc.i4 0
  ldc.i4 0
  call valuetype [System.Drawing]System.Drawing.Color
                 [System.Drawing]System.Drawing.Color::FromArgb(
                 int32, int32, int32)

  call   instance void [System.Windows.Forms]
                 System.Windows.Forms.Control::set_BackColor(
                 valuetype [System.Drawing]System.Drawing.Color)


  //Maximize the Form using WindowState Property
  ldarg.0
  ldc.i4 2        //2 for Maximize
  call instance void [System.Windows.Forms]
                 System.Windows.Forms.Form::set_WindowState(
                 valuetype [System.Windows.Forms]
                 System.Windows.Forms.FormWindowState)
  ret
}
.method family virtual instance void Dispose(bool disposing) cil managed
{
  .maxstack  2

  ldarg.0
  ldfld      class [System]System.ComponentModel.IContainer
               MyForm.TestForm::components
  callvirt   instance void [mscorlib]System.IDisposable::Dispose()

    //Call Base Class's Dispose Event
  ldarg.0
  ldarg.1
  call       instance void [System.Windows.Forms]
                System.Windows.Forms.Form::Dispose(bool)
  ret
}
}
}

cả 2 cái exe đều lỗi y như nhau



Quay về “Visual Basic .NET và C# (VB.NET & C#)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách