eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › 'odpalanie' stringa
Ilość wypowiedzi w tym wątku: 11

  • 1. Data: 2012-01-23 17:21:58
    Temat: 'odpalanie' stringa
    Od: " " <f...@N...gazeta.pl>

    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

    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 2. Data: 2012-01-23 17:29:28
    Temat: Re: 'odpalanie' stringa
    Od: " " <f...@g...pl>

    <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)


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 3. Data: 2012-01-23 18:17:19
    Temat: Re: 'odpalanie' stringa
    Od: " " <f...@g...pl>

    <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





    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 4. Data: 2012-01-23 19:32:45
    Temat: Re: 'odpalanie' stringa
    Od: " " <f...@g...pl>

    <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/


  • 5. Data: 2012-01-23 22:21:15
    Temat: Re: 'odpalanie' stringa
    Od: " " <f...@g...pl>

    kodowanie w kodzie maszynowym odznacza sie dużą prostotą

    1)

    0x55,
    0x8b, 0xec,
    0x8b, 0x45, 0x08,
    0x8b, 0x55, 0x0c,
    0x8b, 0x4d, 0x10,
    0xd9, 0x00, // floaty
    0xd8, 0x02, //
    0xd9, 0x19, //
    0x5d,
    0xc3

    2)

    0x55,
    0x8b, 0xec,

    0x8b, 0x45, 0x08,
    0x8b, 0x5d, 0x0c,
    0x8b, 0x4d, 0x10,

    0x0F, 0x10, 0x00, // sse
    0x0F, 0x10, 0x0B,
    0x0F, 0x59, 0xC1,
    0x0F, 0x12, 0xC8,
    0x0F, 0x58, 0xC8,
    0x0F, 0x28, 0xC1,
    0x0F, 0xC6, 0xC9, 0x01,
    0xF3, 0x0F, 0x58, 0xC1,
    0xF3, 0x0F, 0x11, 0x01,

    0x5d,
    0xc3

    niestety i kawalek na foatach i kawalek na sse sie
    wyklada na pierwszej instrukcji fpu/ sse
    i nie wiem dlaczego


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 6. Data: 2012-01-23 22:33:53
    Temat: Re: 'odpalanie' stringa
    Od: Bronek Kozicki <b...@s...net>

    On 23/01/2012 22:21, f...@g...pl wrote:
    > kodowanie w kodzie maszynowym odznacza sie dużą prostotą

    > niestety i kawalek na foatach i kawalek na sse sie
    > wyklada na pierwszej instrukcji fpu/ sse
    > i nie wiem dlaczego

    skoro to jest takie proste, to na pewno szybko się dowiesz :D


    B.


  • 7. Data: 2012-01-24 09:06:29
    Temat: Re: 'odpalanie' stringa
    Od: " " <f...@g...pl>

    Bronek Kozicki <b...@s...net> napisał(a):

    > On 23/01/2012 22:21, f...@g...pl wrote:
    > > kodowanie w kodzie maszynowym odznacza sie dużą prostotą
    >
    > > niestety i kawalek na foatach i kawalek na sse sie
    > > wyklada na pierwszej instrukcji fpu/ sse
    > > i nie wiem dlaczego
    >
    > skoro to jest takie proste, to na pewno szybko się dowiesz :D
    >
    mam pare kto wie czy nie pilniejszych tematow do przerobienia,
    np podszlifowac francuski, (ktory nawet dosyc podoba mi sie
    jako jezyk np 'elle jetait ses joutes hors de son berceau')


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 8. Data: 2012-01-24 09:55:42
    Temat: Re: 'odpalanie' stringa
    Od: " " <f...@g...pl>

    <f...@g...pl> napisał(a):

    > Bronek Kozicki <b...@s...net> napisał(a):
    >
    > > On 23/01/2012 22:21, f...@g...pl wrote:
    > > > kodowanie w kodzie maszynowym odznacza sie dużą prostotą
    > >
    > > > niestety i kawalek na foatach i kawalek na sse sie
    > > > wyklada na pierwszej instrukcji fpu/ sse
    > > > i nie wiem dlaczego
    > >
    > > skoro to jest takie proste, to na pewno szybko się dowiesz :D
    > >
    > mam pare kto wie czy nie pilniejszych tematow do przerobienia,
    > np podszlifowac francuski, (ktory nawet dosyc podoba mi sie
    > jako jezyk np 'elle jetait ses joutes hors de son berceau')
    >
    >
    przy okazji moge jeszcze dddac dwa spostrzezenia
    co do rozszerzenia c

    te dane wyzej podaje w postaci tabeli bajtow ale
    mozna tez podac w postaci stringa char* = "\x44\x33\xc3";
    czy cos takiego, obie te wersje nie sa zbyt ladne i zwarte

    mz moznaby c wyposazyc w wieksza ilosc mechanizmow wprowadzania
    danych np przed przedrostki przed stringiem - tak jak
    wspominane ostatnio u"" dla tekstow unicode np

    char* t = hex"f4-5c-77-3c 336fd2fe";

    gdzie spacje i myslniki bylyby ignorowane itp
    na x86 jak jest little endian ew trzebaby rozwazyc
    odwracanie dla 2-4-8 bajtowych skupisk itp

    powinno byc wiecej takich form wprowadzania danych
    -raczej nawet resourcy z plikow powinny byc obslugiwane
    z kodu - wtedy nie potrzebny bylby inny tool

    char* t = file"info.txt";

    druga rzecz to wyposazenie c w mechanizmy do
    panowania nad pewnymi aspektami wlasnosci pliku
    wykonywalnego czy procesu w pamieci (typy sekcji
    i inne takie wlasnosci - trzebab by sie zaqstanowic
    bo nie znam dobrze tego tematu)

    co do samych takich sztuczek jak wlasnie
    odpalanie stringow czy na odwrot - rzutowanie
    funkcji z kodu na stringi i operowanie na nich
    to ogolnie mowiac jestem za; ten nx mi sie
    nie specjalnie podoba, moglby sie przydac ale
    do uzywania w ograniczonym zakresie,
    malo dzis uzywa sie SMC ale dla krytycznych
    aplikacji mogloby sie przydac (np podobno
    niektore algorytmy w wydaniu w ktorym
    mozna je modyfikowac w trakcie dzialania
    moga byc (moze istatnie) szybsze itp







    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 9. Data: 2012-01-27 23:46:00
    Temat: Re: 'odpalanie' stringa
    Od: " M.M." <m...@g...pl>

    <f...@g...pl> napisał(a):
    > sprawdzilem, co ciekawe dziala swietnie (dzieks gynvael)

    Myslalem ze na nowych procesorach w ogole nie mozna robic
    jmp ani call pod segment danych.

    Pozdrawiam


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 10. Data: 2012-01-29 08:03:18
    Temat: Re: 'odpalanie' stringa
    Od: Kicer <...@...c>

    M.M. wrote:

    > <f...@g...pl> napisał(a):
    >> sprawdzilem, co ciekawe dziala swietnie (dzieks gynvael)
    >
    > Myslalem ze na nowych procesorach w ogole nie mozna robic
    > jmp ani call pod segment danych.

    wszystko kwestia tego, jak system operacyjny zarządza mechanizmami
    oferowanymi przez procesor

    pozdrawiam

    --
    Michał Walenciak
    gmail.com kicer86
    http://kicer.sileman.net.pl
    gg: 3729519

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: