Ковырял гугл по запросу dlopen() на codesearch Наткнулся уже не помню где вот на такую конструкцию: Код (Text): section .text extern printf extern exit instr db "this is test text. Use another to test" outstr db ">",10,0 global main main: lea eax, [instr] sub ax,97h inc ax xor ax, 101h add ax, 0x30 xor eax, 150h push eax call printf pop eax mov eax, ebx xor eax, eax lea eax, [instr] xor ax, 4h push eax call printf pop eax xor ecx, ecx mcze: inc ecx cmp ecx, 6 je tpo xchg eax, ebx add ax, 0x101 inc ax or ax, 0x3 push eax call mcze tpo: call printf pop eax xor eax, eax ex: call exit leave ret Что тут происходит я понять не могу. Код работает и выводит абракадабру на экран. Но логики он напрочь лишен. По крайней мере я так думаю. Или в этих конструкциях есть смысл?
В отладчике не смотрел? Конечно он будет выводить абракадабру, т.к. все адреса, передаваемые в printf, завязаны на адрес instr(причем нелинейно) По-моему это писали под траву, особенно радует две команды сложения для одного регистра подряд и особенно Код (Text): call exit leave ret