Интеграция ASM и C#
От: N_urk Россия  
Дата: 11.12.04 19:59
Оценка:
Господа! Приперло тут меня! Нада написать к шарпу функцию на ассемблере!

Директива ASM не подходит, надо писать файл на асьме и прилинковывать на стадии компиляции.

Кто может помочь! Я знаю, как это реализовать в Borland C++ но НАДО в VC#!

Конкретно: нужны описания процедур в C#, преобразованные в ASM формат, и описание способа компиляции в VS .NET

Требования к функции: Принимает строку (0-9 A-F, т.е. шестнадцатиричное число) преобьразовывает ее в 10-ричное и возвращает это 10-ричное число.
Так же, по возможности, нужно описание формата хранения строк в памяти (просто чтобы знать, с какого байта начинать обработку строки).

Please Help!
Интеграция ASM и C#
От: Аноним  
Дата: 11.12.04 20:45
Оценка:
Компилятор C# компилит только IL и там ассемблер просто концептуально невозможен. Максимум возможного — написать на ассемблере DLL и подключить ее в .NET проект через PInvoke, либо писать на C++ с расширениями, там делать а блоке ASM, а потом выставлять через .NET класс.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Интеграция ASM и C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.12.04 22:30
Оценка:
Здравствуйте, N_urk, Вы писали:

Предыдущий оратор
Автор: Fagim
Дата: 11.12.04
прав. Добавляю, лишь, что раз возникла такая необходимость, то есть четко непонимаение, что такое дотнет, зачем он нужен и как с ним работать.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Интеграция ASM и C#
От: N_urk Россия  
Дата: 12.12.04 05:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, N_urk, Вы писали:


VD>Предыдущий оратор
Автор: Fagim
Дата: 11.12.04
прав. Добавляю, лишь, что раз возникла такая необходимость, то есть четко непонимаение, что такое дотнет, зачем он нужен и как с ним работать.


Спасибо, за то что вовремя остановили... 8)
Интеграция ASM и C#
От: Аноним  
Дата: 12.12.04 07:31
Оценка:
Вы пишете:
«Требования к функции: Принимает строку (0-9 A-F, т.е. шестнадцатиричное число) преобьразовывает ее в 10-ричное и возвращает это 10-ричное число.»
Логичный вопрос: а чем Вас не устраивает
i.ToString (<уж не помню параметры>);
где i — Ваша переменная?

А вначале, когда ничего не было, всё было так...
Ставьте не спасибо, а рейтинг.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Интеграция ASM и C#
От: N_urk Россия  
Дата: 12.12.04 11:21
Оценка:
Здравствуйте, Fagim, Вы писали:

F>Компилятор C# компилит только IL и там ассемблер просто концептуально невозможен. Максимум возможного — написать на ассемблере DLL и подключить ее в .NET проект через PInvoke, либо писать на C++ с расширениями, там делать а блоке ASM, а потом выставлять через .NET класс.


А вы не могли бы дать ссылку на описание формата DLL, к которой у .Net не будет претензий?
Заранее благодарен
... << RSDN@Home 1.1.3 stable >>
Re: Интеграция ASM и C#
От: N_urk Россия  
Дата: 12.12.04 17:29
Оценка:
Здравствуйте, III.nfo, Вы писали:

IN>Вы пишете:

IN>«Требования к функции: Принимает строку (0-9 A-F, т.е. шестнадцатиричное число) преобьразовывает ее в 10-ричное и возвращает это 10-ричное число.»
IN>Логичный вопрос: а чем Вас не устраивает
IN>i.ToString (<уж не помню параметры>);
IN>где i — Ваша переменная?

IN>
данное сообщение получено с www.gotdotnet.ru

IN>ссылка на оригинальное сообщение


Ах, если бы... Тут дело не в том, что и как преобразовывает, а как использовать ассемблер.
... << RSDN@Home 1.1.3 stable >>
Re: Интеграция ASM и C#
От: Аноним  
Дата: 12.12.04 19:23
Оценка:
Обычная native dll вполне годиться. .NET позволяет использовать native библиотеки.
VBSTREETS, Editor-in-Chief


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Интеграция ASM и C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.04 21:40
Оценка:
Здравствуйте, N_urk, Вы писали:

N_>Ах, если бы... Тут дело не в том, что и как преобразовывает, а как использовать ассемблер.


Так зачем тебе ассемблер?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Интеграция ASM и C#
От: N_urk Россия  
Дата: 13.12.04 08:07
Оценка:
Здравствуйте, VladD2, Вы писали:

[cut]

VD>Так зачем тебе ассемблер?


Мы писали курсовик: "Интеграция асьмы с языками высокого уровня". Вся интеграция прошла в паскале(года эдак 1991) и сишнике(1995) за десять лет много изменилось. Мене захотелось разобраться в том, как можно интегрировать АСЬМу с более продвинутыми языками (Кто нить видел коммерческий проекто на паскале за последние 5 лет?)

Почему асьма? Да, платформо- и осезависимая, но шустрая, как кролики весной...

Ну железячник я в душе, а для железячников есть только один язык — асьмь!
... << RSDN@Home 1.1.3 stable >>
Re[2]: Интеграция ASM и C#
От: N_urk Россия  
Дата: 13.12.04 08:07
Оценка:
Здравствуйте, gaidar, Вы писали:

G>Обычная native dll вполне годиться. .NET позволяет использовать native библиотеки.


G>
данное сообщение получено с www.gotdotnet.ru

G>ссылка на оригинальное сообщение


Проблемма в том, что на асьме не построить DLL хотя можно это на С++ соорудить...
... << RSDN@Home 1.1.3 stable >>
Re[3]: Интеграция ASM и C#
От: migel  
Дата: 13.12.04 09:09
Оценка:
Здравствуйте, N_urk, Вы писали:

N_>Здравствуйте, gaidar, Вы писали:


G>>Обычная native dll вполне годиться. .NET позволяет использовать native библиотеки.


G>>
данное сообщение получено с www.gotdotnet.ru

G>>ссылка на оригинальное сообщение


N_>Проблемма в том, что на асьме не построить DLL хотя можно это на С++ соорудить...

Это как это?????? Вроде строилось на MASMе???
... << RSDN@Home 1.1.4 beta 3 rev. 190>>
Re[4]: Интеграция ASM и C#
От: Mika Soukhov Stock#
Дата: 13.12.04 10:13
Оценка: -1
Здравствуйте, N_urk, Вы писали:

N_>Мы писали курсовик: "Интеграция асьмы с языками высокого уровня". Вся интеграция прошла в паскале(года эдак 1991) и сишнике(1995) за десять лет много изменилось. Мене захотелось разобраться в том, как можно интегрировать АСЬМу с более продвинутыми языками (Кто нить видел коммерческий проекто на паскале за последние 5 лет?)


http://gzip.rsdn.ru/Forum/Message.aspx?mid=766737
Автор: Максим Алексейкин
Дата: 17.08.04
Re[4]: Интеграция ASM и C#
От: N_urk Россия  
Дата: 14.12.04 04:52
Оценка:
Здравствуйте, migel, Вы писали:

M>Здравствуйте, N_urk, Вы писали:


[cut]
M>Это как это?????? Вроде строилось на MASMе???

Ты говоришь про MsASM или про MASM 32?
В MASM 32 есть такая фитча.

; #########################################################################
;
;          Build this DLL from the batch file called BldDLL.bat
;
; #########################################################################

    .386
    .model flat, stdcall
    option casemap :none   ; case sensitive

; #########################################################################

    include \masm32\include\windows.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc

    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib

; #########################################################################

    szText MACRO Name, Text:VARARG
      LOCAL lbl
        jmp lbl
          Name db Text,0
        lbl:
      ENDM

    m2m MACRO M1, M2
      push M2
      pop  M1
    ENDM

    return MACRO arg
      mov eax, arg
      ret
    ENDM

.code

; ##########################################################################

LibMain proc hInstDLL:DWORD, reason:DWORD, unused:DWORD

            szText LmTitle,"tstdll's LibMain Function"

        .if reason == DLL_PROCESS_ATTACH
            szText ATTACHPROCESS,"PROCESS_ATTACH"
            invoke MessageBox,NULL,ADDR ATTACHPROCESS,addr LmTitle,MB_OK

            return TRUE
            ; -----------------------------
            ; If error at startup, return 0
            ; System will abort loading DLL
            ; -----------------------------

        .elseif reason == DLL_PROCESS_DETACH
            szText DETACHPROCESS,"PROCESS_DETACH"
            invoke MessageBox,NULL,addr DETACHPROCESS,addr LmTitle,MB_OK

        .elseif reason == DLL_THREAD_ATTACH
            szText ATTACHTHREAD,"THREAD_ATTACH"
            invoke MessageBox,NULL,addr ATTACHTHREAD,addr LmTitle,MB_OK

        .elseif reason == DLL_THREAD_DETACH
            szText DETACHTHREAD,"THREAD_DETACH"
            invoke MessageBox,NULL,addr DETACHTHREAD,addr LmTitle,MB_OK
            
        .endif

        ret

LibMain Endp

; ##########################################################################

TestProc proc

    jmp @F
      MbTitle db "Test function",0
      MbMsg db "This is tstdll.dll here",0
    @@:

    invoke MessageBox,NULL,addr MbMsg,addr MbTitle,MB_OK

    ret

TestProc endp

; ##########################################################################

End LibMain


Но если так, то не подкинишь ссылочку на статью, о том, "как скормить это .NET"? 8)

Заранее и очень благодаренЁ
... << RSDN@Home 1.1.3 stable >>
Re[5]: Интеграция ASM и C#
От: migel  
Дата: 14.12.04 06:54
Оценка:
Здравствуйте, N_urk, Вы писали:

N_>Заранее и очень благодаренЁ

Копай в сторону pinvoke
например для твоей ДЛЛ
будет так
[DllImport( "tstdll.dll", EntryPoint="TestProc", CharSet=CharSet.Auto, ExactSpelling=true, PreserveSig = true)]
private static extern void TestProc();
... << RSDN@Home 1.1.4 beta 3 rev. 214>>
Re[4]: Интеграция ASM и C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.04 09:00
Оценка: -1
Здравствуйте, N_urk, Вы писали:

N_>Мы писали курсовик: "Интеграция асьмы с языками высокого уровня". Вся интеграция прошла в паскале(года эдак 1991) и сишнике(1995) за десять лет много изменилось. Мене захотелось разобраться в том, как можно интегрировать АСЬМу с более продвинутыми языками


Ты нашел самый неподходящий вариант. Если уж в C# встраивать ассемблер, то это должен быть ассемблер дотнета, т.е. MSIL. А вот x86-ой ассемблер встраивать в Шарп не очень разумная вещь. По крайней мере для тех реализаций этого языка которые работают поверх CLR.

N_>(Кто нить видел коммерческий проекто на паскале за последние 5 лет?)


На том же Дельфи хоть из ружа стреляй.

N_>Ну железячник я в душе, а для железячников есть только один язык — асьмь!


Теперь есть и MSIL. На мем може многое можно.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Интеграция ASM и C#
От: N_urk Россия  
Дата: 14.12.04 20:27
Оценка:
Здравствуйте, migel, Вы писали:

M>Здравствуйте, N_urk, Вы писали:


N_>>Заранее и очень благодаренЁ

M>Копай в сторону pinvoke
M>например для твоей ДЛЛ
M>будет так
M>[DllImport( "tstdll.dll", EntryPoint="TestProc", CharSet=CharSet.Auto, ExactSpelling=true, PreserveSig = true)]
M>private static extern void TestProc();

Тиренькс! Ахромный, за помошь!
... << RSDN@Home 1.1.3 stable >>
Re[5]: Интеграция ASM и C#
От: N_urk Россия  
Дата: 14.12.04 20:27
Оценка:
Здравствуйте, VladD2, Вы писали:

[cut]
VD>На том же Дельфи хоть из ружа стреляй.


Я сказал Паскаль, а не Дельфи! А это большая разница!

А на счет мисла, так это мне только светит, потому, что он для .NET, а это, практически равно эмулятору, а я хочу разобраться в строении процессоров Intel, а не виртуальной машины!

И ваще! Это уже можно и в "войны" пихнуть.
... << RSDN@Home 1.1.3 stable >>
Re[6]: Интеграция ASM и C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.04 21:05
Оценка:
Здравствуйте, N_urk, Вы писали:

N_>Я сказал Паскаль, а не Дельфи! А это большая разница!


И что есть какая-то разница где с ассемблером возиться? Правда для Дельфи асм уже давно как встроен.

N_>А на счет мисла, так это мне только светит, потому, что он для .NET, а это, практически равно эмулятору, а я хочу разобраться в строении процессоров Intel, а не виртуальной машины!


Тогда выбири что-то отличное от дотнета. На дотнете такой подход изврат. Да и если уж прижмет, то есть ДЛЛ и МС++.

N_>И ваще! Это уже можно и в "войны" пихнуть.


Тебе виднее.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Интеграция ASM и C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.04 21:05
Оценка:
Здравствуйте, N_urk, Вы писали:

N_>Проблемма в том, что на асьме не построить DLL хотя можно это на С++ соорудить...


Еще лет 10 назад подобных проблем небыло.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.