Текущий архив: 2009.09.06;
Скачать: CL | DM;
Вниз
преобразование assembler в pascal Найти похожие ветки
← →
hinst © (2009-07-03 14:19) [0]Превед всем. Подскажите пожалуйсто, нет ли какой-нибудь проги, чтобы преобразовывать ассемблерный код в паскаль???
спасибо за внимание.
← →
Сергей М. © (2009-07-03 14:21) [1]Произвольный что ли код ?
Т.е. невесть откуда взявшийся и к Делфи отношения не имеющий ?
← →
hinst © (2009-07-03 14:22) [2]нет. надо преобразовывать ассемблерные вставки в функциях delphi
← →
Palladin © (2009-07-03 14:24) [3]самый хитрый?
← →
Anatoly Podgoretsky © (2009-07-03 14:24) [4]Они что не работают?
← →
hinst © (2009-07-03 14:24) [5]кто самый хитрый??
← →
hinst © (2009-07-03 14:24) [6]Anatoly Podgoretsky: ДА!!! именно
← →
Rouse_ © (2009-07-03 14:25) [7]
> Превед всем
Превед.
> нет ли какой-нибудь проги, чтобы преобразовывать ассемблерный
> код в паскаль???
http://ftp.cs.pu.edu.tw/pub/cpatch/patchutil/dede/plugin/asm2pas.zip
← →
Сергей М. © (2009-07-03 14:25) [8]
> надо преобразовывать ассемблерные вставки в функциях delphi
И что в рез-те нужно получить ?
Приведи пример оригинального асм-кода и соответствующий ему паскаль-код после этого самого "преобразования" ..
← →
hinst © (2009-07-03 14:27) [9]мне надо вот эту шляпу перевести:
function RealFloatCall_Register(p: Pointer;
_EAX, _EDX, _ECX: Cardinal;
StackData: Pointer;
StackDataLen: Longint
): Extended; Stdcall;
var
E: Extended;
begin
asm
mov ecx, stackdatalen
jecxz @@2
mov eax, stackdata
@@1:
mov edx, [eax]
push edx
sub eax, 4
dec ecx
or ecx, ecx
jnz @@1
@@2:
mov eax,_EAX
mov edx,_EDX
mov ecx,_ECX
call p
fstp tbyte ptr [e]
end;
Result := E;
end;
← →
hinst © (2009-07-03 14:30) [10]Rouse_: спасибо, канешн, только эта прога для dump-файлов. а у меня обычный код
← →
Rouse_ © (2009-07-03 14:32) [11]А что тут не понятно? StackData разворачивается на стэке, заполняются 3 регистра и произордится вызов функции. На прямую ты так не напишешь...
← →
Сергей М. © (2009-07-03 14:35) [12]
> hinst © (03.07.09 14:27) [9]
А чем собссно она тебе в асм-виде помешала ?
Не зря же ее на басме писали, а не на паскале ..
← →
hinst © (2009-07-03 14:35) [13]если я не напишу так на прямую, то это очень плохо
← →
Сергей М. © (2009-07-03 14:36) [14]Кому плохо ?)
← →
Rouse_ © (2009-07-03 14:37) [15]Ты ее вообще можешь не вызывать, а дергать напрямую ту функцию, адрес которой передается в первом параметре
← →
hinst © (2009-07-03 14:37) [16]Сергей М: просто я тут хотел один очень хороший компонент собрать для arm. но все ассемблерные вставки не собираются. у меня подозрение, что что у asm.arm синтаксис иной. не такой, как у asm.i386
← →
hinst © (2009-07-03 14:39) [17]а это:
function RealFloatCall_Register(p: Pointer;
_EAX, _EDX, _ECX: Cardinal;
StackData: Pointer;
StackDataLen: Longint
): Extended; Stdcall;
это процедура вызова любой функции с любыми параметрами
← →
Anatoly Podgoretsky © (2009-07-03 14:39) [18]
> Anatoly Podgoretsky: ДА!!! именно
Что именно не работает и какой смысл переводить неработающие фукции, они что станут работающими?
← →
hinst © (2009-07-03 14:41) [19]Anatoly Podgoretsky: для i386 она работает, а для ARM не работает
← →
Сергей М. © (2009-07-03 14:41) [20]
> все ассемблерные вставки не собираются
Что, вот прямо так и говорят "мы не собираемся" ?)
Или все-таки компилятор дает тебе какую-то конкретную инф-цию об отказе в сборке ?
← →
hinst © (2009-07-03 14:42) [21]Сергей М.:
они говорят:
Error: Unknown identifier "ECX" //на строке "mov ecx, stackdatalen"
Fatal: Internal error 200501051
← →
Anatoly Podgoretsky © (2009-07-03 14:42) [22]> hinst (03.07.2009 14:41:19) [19]
У нас конференци по Дельфи однако
← →
hinst © (2009-07-03 14:44) [23]Anatoly Podgoretsky: так а я про что спрашиваю?? про C++ что-ли??
← →
Rouse_ © (2009-07-03 14:45) [24]Чтоб это переписать - нужно уметь писать на ARM ASM-е :)
← →
hinst © (2009-07-03 14:47) [25]Rouse_: вот и у меня такое подозрение. только я на обычном-то не умею писать, а тут ARM
← →
Сергей М. © (2009-07-03 14:49) [26]
> hinst © (03.07.09 14:42) [21]
Ну дык в ARM, наверно, нет такого РОН - вот оно и "не собирается" ..
Там же иная архитектура, отличающаяся от x86 ..
← →
Сергей М. © (2009-07-03 14:51) [27]
> я на обычном-то не умею писать, а тут ARM
А ты вооще где эту ф-цию подобрал ?
И в каком алгоритмическом контексте она используется ?
← →
Anatoly Podgoretsky © (2009-07-03 14:51) [28]> hinst (03.07.2009 14:44:23) [23]
Про АРМ ты сказал значительно позже, кроме того вопрос задал не в той конференции, сейчас в правильной.
← →
Anatoly Podgoretsky © (2009-07-03 14:53) [29]> hinst (03.07.2009 14:47:25) [25]
Можно найти конференцию по ARM и там попросить перевести из Дельфи, предварительно объяснив, что должно делаться.
← →
hinst © (2009-07-03 14:54) [30]Сергей М.: это процедура вызова любой функции с любыми параметрами, как мне думается. она в InnerFusePascalScript
← →
Сергей М. © (2009-07-03 15:04) [31]Ах вон оно что)..
Т.е. ты пытаешься портировать на платформу ARM-платформу InnerFusePascalScript-движок ?
← →
hinst © (2009-07-03 15:33) [32]Сергей М.: ну да
← →
Сергей М. © (2009-07-03 15:40) [33]Ну тады без знания архитектуры ARM не обойтись
← →
БарЛог © (2009-07-03 15:44) [34]Удали строчки, на которых ругаются :)
← →
hinst © (2009-07-03 15:54) [35]БарЛог: агаблин, только работать не будет
← →
Сергей М. © (2009-07-03 16:04) [36]
> hinst
Портируемую версию чем собираешь ? Фрипаскалем ?
← →
hinst © (2009-07-03 16:09) [37]Сергей М.: да. именно им
← →
Сергей М. © (2009-07-03 16:21) [38]Так это тебе к разработчикам Фрипаскаля обращаться нужно ..
Кому уж как не им лучше всего знать соглашения о передаче параметров, тем паче для поддерживаемой ими ARM-платформы)
← →
RWolf © (2009-07-03 19:26) [39]Соглашения там стандартные, по крайней мере для сишного кода;
так что, скорее всего, параметры лягут в R0-R3.
Но лучше перевести сабж на паскаль, просто ради портабельного кода. Будет не хватать скорости — тогда будете думать, как оптимизировать.
← →
Pavia © (2009-07-03 23:46) [40]А много кода переводить?
Страницы: 1 2 вся ветка
Текущий архив: 2009.09.06;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.015 c