-
Data: 2012-01-23 19:32:45
Temat: Re: 'odpalanie' stringa
Od: " " <f...@g...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]<f...@g...pl> napisał(a):
> <f...@g...pl> napisał(a):
>
> > <f...@N...gazeta.pl> napisał(a):
> >
> > > ostatnio czytalem blog gdzie autor pisze mw ze
> > > jak chce szybko odpalic funkcje w asmie to pisze
> > > ja w stringu po czym rzutuje na wskaznik do funkcji
> > > i odpala - bardzo ciekawa rzecz
> > >
> > > czy rzeczywiscie daje sie tak zrobic - a jesli tak czy
> > > ktos moze podac funkcjonalny przyklad
> > >
> >
> > (dodam ze jakis czas probowalem sie nieco poduczyc asemblera
> > ale natrafilem na granice zaporowa, mam wrazenie ze musialbym
> > sie powaznie rozbujac by pisac kod w mieszanym c/asm, moze
> > gdyby takie odpalanie stringow fajnie dzialalo byloby blizej)
> >
> >
>
> sprawdzilem, co ciekawe dziala swietnie (dzieks gynvael)
>
> char asmRoutineData[] =
> {
> 0xC8, 0x00, 0x00, 0x00, // enter 0, 0
> 0xB8, 0x02, 0x00 ,0x01 ,0x00, // mov eax, 65538
> 0xC9, // leave
> 0xc3 // ret
> };
>
> int (*asmRoutine)(void) = (int (*)(void)) asmRoutineData;
>
> int ret = asmRoutine();
>
> // zwraca 65538
>
> moze nawet sse by dzialalo i nie musialbym sie babac z
> linkerem
>
>
sse mi nie dziala :(
mialem np taka funkcje testowa
_asm_add_float4_vectors_by_sse:; Function begin
enter 0, 0 ; 0061 _ C8, 0000, 00
mov eax, dword [ebp+8H] ; 0065 _ 8B. 45, 08
mov ebx, dword [ebp+0CH] ; 0068 _ 8B. 5D, 0C
mov ecx, dword [ebp+10H] ; 006B _ 8B. 4D, 10
movups xmm0, oword [eax] ; 006E _ 0F 10. 00
movups xmm1, oword [ebx] ; 0071 _ 0F 10. 0B
addps xmm0, xmm1 ; 0074 _ 0F 58. C1
movups oword [ecx], xmm0 ; 0077 _ 0F 11. 01
leave ; 007A _ C9
ret ; 007B _ C3
ktora linkowana zawnetrznie jako
extern "C" int __cdecl asm_add_float4vectors_sse(float4* a, float4* b,
float4* ret);
o ile pamietam dzialala (niestety nie pamietam dokladniej
co tam grzebalem dwa czy trzy miesiace temu a notatki jakos
mi jakby czesciowo wcielo
teraz
char asm_add_float4_vectors_by_sseData[] =
{
0xC8, 0x00, 0x00, 0x00,
0x8B, 0x45, 0x08,
0x8B, 0x5D, 0x0C,
0x8B, 0x4D, 0x10,
0x0F, 0x10, 0x00,
// 0xC9,
// 0xC3, //dotad dziala
0x0F, 0x10, 0x0B,
// 0xC9,
// 0xC3, //tu juz wywala
0x0F, 0x58, 0xC1,
0x0F, 0x11, 0x01,
0xC9, // leave
0xC3 // ret
};
cdecl void (*asmAddSSE)(float4*, float4*, float4*) = (cdecl void (*)
(float4*, float4*, float4*)) asm_add_float4_vectors_by_sseData;
static float4 a = {1,2,1,0};
static float4 b = {1,2,3,0};
static float4 c = {1,1,0,0};
asmAddSSE(&a,&b,&c);
wywala sie jakby na drugiej (nie pierwszej) linijce w sse
- nie wiem czy nie pochrzanione jest tu cos z przekazywaniem
argumentow (m.in. kompilator lyka slowo cdecl a powinno byc chyba
__cdecl a przy tym jest blad kompilacji)
nie mam glowy teraz sie w to wglebic - moze ktos kojarzy co
moze byc przyczyna bledu???
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Następne wpisy z tego wątku
- 23.01.12 22:21
- 23.01.12 22:33 Bronek Kozicki
- 24.01.12 09:06
- 24.01.12 09:55
- 27.01.12 23:46 M.M.
- 29.01.12 08:03 Kicer
- 01.02.12 15:30 Wiktor S.
Najnowsze wątki z tej grupy
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-06-08 Nowy 17. Raport Totaliztyczny - Patroni Kontra Bankierzy
- 2025-06-07 Mouser - koszt wysyłki
- 2025-06-07 Co robić, jak robić, aby dużo zarobić, a się nie narobić ?
- 2025-06-07 Co robić, jak robić, aby dużo zarobić, a się nie narobić ?
- 2025-06-07 Co robić, jak robić, aby dużo zarobić, a się nie narobić ?
- 2025-06-07 Warszawa => Software .Net Developer <=
- 2025-06-07 Warszawa => Junior SQL / FrontEnd developer <=
- 2025-06-07 Warszawa => Team Lead Data Engineer (Snowflake) <=
- 2025-06-07 Kraków => Kotlin Developer <=
- 2025-06-07 Warszawa => Senior Key Account Manager IT <=
- 2025-06-07 Gdańsk => PHP Developer <=
- 2025-06-07 Warszawa => Specjalista ds. Sprzedaży <=
- 2025-06-07 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-06-07 Warszawa => Sales Assistant and Customer Development Specialist <=
- 2025-06-07 Warszawa => Programista Full Stack .Net <=