LINUX.ORG.RU

Либа для FreeBSD под Win32


0

0

Есть код на С с огромным кол-вом ассемблерных вставок, все это когда-то писалось в Visual Studio. На сегодняшний день стоит задача портировать этот код на FreeBSD если бы не ASM вставки проблем нет, но GCC для ассемблера свой формат.

VisualStudio

_asm {
cld
mov edi, x
mov ecx, y
xor eax, eax
rep stosd
}

GCC:
asm("cld");
asm("mov %edi, $x");
asm("mov %ecx, $y");
asm("xor %eax, $eax");
asm("rep stosd);


Перспектива переписывать 5k строк на ассемблере меня не радует.

Может быть можно этот код собрать в либу и скомпилировать в Visual Studio, а потом эту либо подсунуть gcc и будет мне счастье?
Не сильно ли я расфантазировался?


Простейшее приходящее в голову решение - напиши перловый скрипт который будет переделывать синтаксис ассемблерных вставок.

svr4
()
Ответ на: комментарий от T-34

>На сколько немного?

Ну у тебя асм в интеловском ситаксисе, вот этот флаг и говорит gcc что inline-asm в интеловском синтаксисе. И многострочные asm вставки в gcc тоже можно делать. У тебя остается проблема только в том, что ты теперь должен указать какие регистры ты херишь в своих вставках.

imp ★★
()

Поскольку все вставкитакого вида:

void function(void){

_asm{ ... }


}

тело функции полностью написано на асме, решили сделать просто статическую библиотеку используя fasm.

T-34
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.