Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Ve kterém roce se narodil autor fotografií z výstavy "Ostravská periferie"?

V dnešní soutěži hrajeme o:



NASM - jak na "řídkou tabulku"?

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: NASM - jak na "řídkou tabulku"?

Autor: pepak

16:46:32 24.02.2011

"Něco jako optimalizace." Jeden nepřímý skok je často rychlejší než série přímých podmíněných skoků.

(Jinak koukám, že jsem tam nechal chybku - všechny ty org mají být jen v komentáři, ne jako "ostré" instrukce.)

Citovat příspěvek

 

Re: NASM - jak na "řídkou tabulku"?

Autor: MazeGen

9:30:14 24.02.2011

Na co je to dobrý? Něco jako obfuskace?

Jinak v době komplilace jsem získával náhodný číslo pomocí %RANDOM%, který vrací náhodný číslo v rozsahu od 0 do 32767. Když to zjednoduším, na příkazové řádce jsem hodnotu přiřadil k proměnné pomocí /DRAND (MASM). Není to moc pohodlný, ale jde to.

Citovat příspěvek

 

Re: NASM - jak na "řídkou tabulku"?

Autor: pepak

16:27:45 19.02.2011

Kdyby to někoho zajímalo, tak se to dělá takhle:

XYZ:
org 0
mov eax, 12345
mov ebx, 67890
...
nekam:
...
ret
times (1234h-0h)-($-XYZ) db 0

org 1234h
kousek1:
mov eax, 54321
jmp nekam
times (2345h-1234h)-($-kousek1) db 0

org 2345h
kousek2:
mov eax, 55555
jmp nekam
times (3456h-2345h)-($-kousek2) db 0

org 3456h
kousek3:
mov eax, 11111
jmp nekam

Citovat příspěvek

 

NASM - jak na "řídkou tabulku"?

Autor: pepak

14:06:27 19.02.2011

Potřeboval bych trochu popíchnout s NASM (nebo i jiným PCčkovským assemblerem, třeba MASM32). Potřebuju napsat kód, který bude hodně "řídký". Ve zkompilovaném tvaru by to vypadalo zhruba tak, že na offsetu 1234h od začátku procedury bude kousek kódu, od offsetu 2345h další kousek kódu a od offsetu 3456h ještě další kousek kódu. Není definováno, co bude mezi nimi (jestli nuly nebo NOPy nebo něco jiného, to je mi fuk), ale potřebuji mít zajištěno, že začátky těch kousků budou na stanovených offsetech. Něco takovéhleho, akorát že to není syntakticky správně:

XYZ:
org 0
mov eax, 12345
mov ebx, 67890
...
nekam:
...
ret

org 1234h
kousek1:
mov eax, 54321
jmp nekam

org 2345h
kousek2:
mov eax, 55555
jmp nekam

org 3456h
kousek3:
mov eax, 11111
jmp nekam

Od assembleru bych chtěl, aby ověřil, že se ty kousky nebudou překrývat, a doplnil mezery mezi nimi libovolným obsahem (nuly, 90h, náhodná data...) tak, aby každý kousek začínal na stanoveném offsetu. Jak se toho dosáhne jinak, než že si celou proceduru přeložím ručně?

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: