Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: cách nào để kết hợp Assembly với .NET ?

  1. #1
    Ngày gia nhập
    04 2007
    Bài viết
    30

    Mặc định cách nào để kết hợp Assembly với .NET ?

    em viết được vài chương trình nhỏ trên Assembly , em muốn dùng nó như 1 thư viện để gọi từ chương trình viết bằng .NET được ko nhỉ ?

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Managed C++ là một phải pháp ở .NET . Đây là một ngôn ngữ nhiều bí ẩn.

    MC++ chạy mixed code nên có nghĩa là chương trình của nó bao gồm cả native lẫn managed code và vẫn dùng được các từ khóa __asm ở MC++

    Sau đó từ project C# bạn có thể references tới nó để sử dụng lại thư viện trên .NET

    Ví dụ đây là 1 đoạn code MC++ gọi ASM trên .NET

    C++ Code:
    1. #include "stdafx.h"
    2. #include <windows.h>
    3.  
    4. using namespace System;
    5.  
    6. #define UNKNOWN          0
    7. #define MMX              1
    8. #define SSE              2
    9. #define SSE2             3
    10. #define AMD3DNOW         4
    11. #define SSE3             5
    12.  
    13. #pragma unmanaged
    14.  
    15. int detectCPU()
    16. {      
    17.     UINT r_ecx,r_edx;
    18.  
    19.     __asm
    20.     {
    21.         mov eax,1       // Call func 01
    22.         cpuid
    23.         mov r_ecx,ecx
    24.         mov r_edx,edx
    25.     }
    26.    
    27.     if(r_ecx & 1)
    28.         return SSE3;    
    29.     if((r_edx >> 30) & 1)       // Bit 0
    30.         return AMD3DNOW;    
    31.     if((r_edx >> 26) & 1)       // Bit 26
    32.         return SSE2;
    33.     if((r_edx >> 25) & 1)       // Bit 25
    34.         return SSE;
    35.     if((r_edx >> 23) & 1)       // Bit 23
    36.         return MMX;
    37.  
    38.     return UNKNOWN;
    39. }
    40. #pragma managed
    41.  
    42. int main(array<System::String ^> ^args)
    43. {
    44.     Console::WriteLine(L"Detect your CPU technology");
    45.  
    46.     int nResult = detectCPU();
    47.     switch (nResult)
    48.     {
    49.         case UNKNOWN:
    50.             Console::WriteLine(L"Sorry! Unknown");
    51.             break;
    52.         case MMX:
    53.             Console::WriteLine(L"Support MMX");
    54.             break;
    55.         case SSE:
    56.             Console::WriteLine(L"Support SSE");
    57.             break;
    58.         case SSE2:
    59.             Console::WriteLine(L"Support SSE2");
    60.             break;
    61.         case AMD3DNOW:
    62.             Console::WriteLine(L"Support 3DNow! (AMD)");
    63.             break;
    64.         case SSE3:
    65.             Console::WriteLine(L"Support SSE3!");
    66.             break;
    67.     }
    68.  
    69.     return 0;
    70. }
    Đã được chỉnh sửa lần cuối bởi ZCoder87 : 20-11-2008 lúc 12:24 PM.

Các đề tài tương tự

  1. Help về Assembly
    Gửi bởi meteor_lonely trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 11-10-2013, 12:16 AM
  2. Algorithm Vần đề chèn mã assembly(mã máy) vào chương trình
    Gửi bởi tuandoi1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 05-08-2011, 12:12 PM
  3. assembly
    Gửi bởi heroviet trong diễn đàn Đào tạo CNTT
    Trả lời: 4
    Bài viết cuối: 05-07-2009, 10:01 AM
  4. Cần tài liệu về Assembly .Net
    Gửi bởi cndragon trong diễn đàn Công cụ, ebooks VC++
    Trả lời: 2
    Bài viết cuối: 03-03-2009, 04:02 PM
  5. tao assembly
    Gửi bởi lampv.86 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 26-09-2008, 05:29 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn