К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Интересный вопрос об интеграции С\С++

Гость
0 - 16.04.2013 - 19:48
Передо мной стоит необычная задача. Требуется на языке С\С++ создать некоторую структуру(граф). Затем эту структуру в виде машинного кода передать в другой "модуль".

Я никогда не сталкивался с подобного рода задачами. Подскажите, как можно в С\С++ перейти к машинному коду, перевести в него некоторые структуры или данные?



Гость
1 - 16.04.2013 - 21:09
>Затем эту структуру в виде машинного кода передать в другой "модуль".

жесь какая, а можно в виде массива байт?
Гость
2 - 16.04.2013 - 21:58
Если это учебная задача, то стоит задуматься о смене преподавателя/факультета/ВУЗа, ибо согласен с оценкой предыдущего участника.
Если же для реального использования... даже не знаю, зачем это нужно и как реализовать, чтобы не словить проблемы при внедрении.
Гость
3 - 16.04.2013 - 22:55
предлагаю в начале уточнить что автор имеет ввиду. ибо фраза "машинный код" ломает мозг. вы хотите передать объект (данные) в другой модуль или нечто иное?
Гость
4 - 16.04.2013 - 22:57
Если задачу именно так и поставили, то это жесть ;)
Может тут имели ввиду что нужно создать обычную dll библиотеку ;) хотя конечно фиг его знает
Гость
5 - 16.04.2013 - 23:45
Куда куда передать?
Если "модуль" - это не отдельная железяка, то есть смысл тот самый "граф" с его "точками" сделать в виде классов с набором свойств и методов, и никуда вообще не передавать, а весь функционал завернуть в API
Гость
6 - 17.04.2013 - 17:10
Да, естественно это учебная задача. Естественно я сам не понимаю зачем это нужно делать.

Смысл в том что два человека пишут два "куска" кода. Я делаю часть, которая создает граф(множество связвнных друг с другом дескрипторов, реализовано с помощью структур). Потом полученный граф я должен передать в другой кусок, который его обрабатывает как-то. Но передать это надо зачем-то и как-то в виде машинного кода.
Гость
7 - 17.04.2013 - 18:22
Зачем опускаться до уровня машинного кода, когда в Runtime-версии оно само до туда опустится.
Если надо делать на низком уровне - уже всё придумано было в прошлом. Это AddRef, QueryInterface и Release-методы :-)
Делайте COM-объект и передавайте куда хотите что хотите, хоть удаленно через сеть :-)
В машинные кода переводить - это нелепо. Если уж прослойку между модулями мутить в машинных кодах - лучше тогда из них вообще не вылазить на уровень C/C++
Гость
8 - 17.04.2013 - 18:53
Шо, таке на асме уже memcpy с перебором такая проблема?
Гость
9 - 17.04.2013 - 19:26
Создаете объект (класс), описывающий этот граф,
затем в экземпляр класса- забиваете все данные этого графа, и просто передаете этот экземпляр как обычную переменную, передать можно даже по сети, предварительно сделав сериализацию.
Гость
10 - 17.04.2013 - 20:47
9- это ж тот же Distributed Component Object Model :-)
Пусть играют в учебные задачи по-взрослому ))
Гость
11 - 17.04.2013 - 21:43
ОМГ, неужели Абрамов дядя Женя еще преподает?? Узнаю его почерк в "постановке задачи". :))
Гость
12 - 17.04.2013 - 21:57
О, точно. Духом Абрамова веет за версту.
Гость
13 - 17.04.2013 - 22:06
12-Rcorp > Вовек не забуду. :)
Кстати, автор, я бы посоветовал сделать это так, как происходит в нормальном случае - передавать указатель/ссылку своего объекта методам "другого модуля", и авторитетно заявлять, что ты передаешь в "машинном" коде - ну действительно, покажи листинг дизасма - там будет чо-нить типа
move esi, dword ptr [ebp-4]
push esi
call VeryHardFunction
:))
Гость
14 - 17.04.2013 - 22:22
13: Думаешь у абрамова прокатит?
Гость
15 - 17.04.2013 - 23:01
14-Rcorp > А он сам знал, чего хочет? Или может специально так ставил вопросы - типа чтобы "думали". Только о чем - х пойми.
Ну и на самом деле, я думаю, речь об этом. Ну или полная сериализация-десериализация - протокольчик надо будет придумать. Иначе я тоже не понимаю, что есть "передать в машинном коде" . Это 0 и 1 на сегодня (в основном), или я отстал? :)
Гость
16 - 17.04.2013 - 23:06
15: А шо, берем таблицу OP-кодов на i386 (надеюсь, он не на Z80 хочет реализацию?) и давай фигачить из таблицы HEXы в массив. А его по поинтеру потом вызывать.
Гость
17 - 17.04.2013 - 23:14
16-Rcorp > Так а какое отношение данные (граф в нашем случае) имеют к опкоду? Или нужно будет заюзать std::map? Это уже шифрование какое-то прямо. :)
Короче, автор, препод имеет в виду - передать в бинарном виде. Короче, читай выше, делай как советуем - и не парься. Щас всего один год рядовым служат, я вон успел на военную кафедру - потом на 2 года ДВ. :)
Гость
18 - 08.05.2013 - 19:00
Цитата:
Сообщение от DAVIDnovicheeeeek Посмотреть сообщение
как можно в С\С++ перейти к машинному коду, перевести в него некоторые структуры или данные
Если я правильно понял, то достаточно объявить требуемое как константы.
Гость
19 - 12.05.2013 - 19:17
_asm{
**


К списку вопросов






Copyright ©, Все права защищены