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
| Если я правильно понял, то достаточно объявить требуемое как константы. | |
19
- 12.05.2013 - 19:17
|
_asm{ ** | |
| Интернет-форум Краснодарского края и Краснодара |