Как я могу экспортировать переменную FASM в VC ++ Express 2012?

Я написал несколько модулей на ассемблере и использовал постоянные переменные, чтобы определить их размер в FASM.

Как я могу использовать эти переменные в VC ++ после связывания с объектным файлом FASM?

Например, если мой ассемблерный код выглядит так:

start: //function declaration, exported
xor eax, eax
inc eax
retn
end_func:

Размер end_func - start

Как я могу экспортировать размер end_func - start в VC ++?

1

Решение

Вы можете экспортировать переменную с помощью public директива на стороне FASM, и импортируйте ее в ваш код C ++ с extern,

Вот короткий пример:

// --- test.asm ---
format MS COFF

public counter as '_counter'

section '.data' data readable writeable
counter dd 0x7DD

// --- example.cpp ---
#include <iostream>

extern "C" long int counter;

int main() {
std::cout << "Hello " << ++counter << "!" << std::endl;
return 0;
}

// --- Compile, Link and Run ---
> fasm test.asm
> cl /EHs example.cpp test.obj
> example.exe

// --- Output: ---
Hello 2014!

В примере используется MSVC cl.exe Компилятор непосредственно в командной строке для иллюстративных целей, однако в вашем случае будет просто добавить выходные файлы fasm .obj для связи с вашим кодом в настройках проекта VS link.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]