|
6 / 6 / 3
Регистрация: 19.09.2010
Сообщений: 173
|
|
Запуск ассемблерного кода на выполнение из main()10.12.2015, 08:36. Показов 5467. Ответов 7
Метки нет (Все метки)
Добрый день. Подскажите, если есть готовый файл на ассемблерном коде, то как его можно запустить на выполнение из C++? Взаимодействовать программы не должны, .асм автономен. Как я понимаю: нужно просто загрузчику передать путь к этому файлу. Но как?
0
|
|
| 10.12.2015, 08:36 | |
|
Ответы с готовыми решениями:
7
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 10.12.2015, 08:51 | |
|
Что значит, не должны взаимодействовать? У тебя отдельная программа на ассемблере?
0
|
|
|
6 / 6 / 3
Регистрация: 19.09.2010
Сообщений: 173
|
|
| 10.12.2015, 14:30 [ТС] | |
|
Есть отдельный файл на коде асм, его можно руками скопипастить в проект на АСМ, запустить, он отработает.
Хотелось бы вызвать из кода на c++ загрузчик, в который параметром передастся путь к файлу с кодом асм, запустится новый процесс, т.е. создастся новое консольное окно, отработает этот процесс, завершится, продолжится программа на c++. Суть в том, что этот ассемблерный файл - результат работы программы на с++, т.е. это транслятор на асм, и по завершении трансляции хотелось бы запустить результат на выполнение.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 10.12.2015, 15:22 | |
|
Ты хочешь, чтобы твоя программа выполняла произвольный кусок на ассемблере, который даже не скомпилирован?
Так не получится.
1
|
|
|
|
|
| 10.12.2015, 16:09 | |
|
откуда вообще взялось такое принципиальное условие, что выполняться должен именно кусок на ассемблере? Почему не на Яве, Питоне, СиШарпе... любом другом языке?
По-моему, ты просто "слышал звон - не знаю где он". Услышал где-то, что "программы выполняются на ассемблере" и вбил себе в голову. Создавай экзешник - запускай его как просесс. Ну или вообще может тебе код из ДЛЛки выполнять будет вполне достаточно.
0
|
|
|
6 / 6 / 3
Регистрация: 19.09.2010
Сообщений: 173
|
|
| 10.12.2015, 18:02 [ТС] | |
|
nmcf, понял, спасибо, обойдусь без этого
Kuzia domovenok, не про это речь была. Повторюсь: ассемблерный код - результат работы транслятора, в котором и хотелось бы отправить на выполнение код асм. Но да, nmcf верно подметил, что ещё скомпилировать надо получившийся код.
0
|
|
|
|
|||
| 10.12.2015, 18:31 | |||
|
-------------------------- Пример: C /* Файл *.c */ #include <stdio.h> int main (void) { printf ("Hello world!\n"); return 0; } Code $ gcc t.c -S -o t.s Code .file "t.c" .section .rodata .LC0: .string "Hello world!" .text .globl main .type main, @function main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $4, %esp movl $.LC0, (%esp) call puts movl $0, %eax addl $4, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret .size main, .-main .ident "GCC: (GNU) 4.1.2 (Gentoo 4.1.2 p1.1)" .section .note.GNU-stack,"",@progbits 1. Есть функция main, которая подразумевается как точка входа для некоторого внешнего обвеса 2. Есть вызов внешней функции puts, которая должна быть в некоторой внешней библиотеке 3. Для функций main (правда не в нашем случае) и puts есть некоторые фиксированные правила по передаче параметров и результата (в соответствии с ABI) 4. В функции main есть работа со стеком по некоторым фиксированным правилам (в соответствии с ABI) И тем не менее в условиях системы, которая работает по нужным правилам, из этого ассемблерного текста можно получить исполняемый файл: Code $ gcc t.s -o a.out $ ./a.out Hello world! Поэтому без внятной постановки вопроса с твоей стороны сложно на него (вопрос) ответить
1
|
|||
| 10.12.2015, 18:31 | |
|
Помогаю со студенческими работами здесь
8
Быстродействие ассемблерного кода Вставка ассемблерного кода в код С++ Вставка ассемблерного кода в Си-программу Как в C# использовать фрагмент ассемблерного кода? Вызов функции СИ из ассемблерного кода. Компиляция из MakeFile. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|