Нашел след код в стиле хелоу уорлд: Код (Text): .section .data hello: .ascii "Hello, world!\n" hello_len: .long . - hello ######################################################################## .section .text .globl _start _start: xorl %ebx, %ebx # %ebx = 0 movl $4, %eax # write () system call xorl %ebx, %ebx # %ebx = 0 incl %ebx # %ebx = 1, fd = stdout leal hello, %ecx # %ecx ---> hello movl hello_len, %edx # %edx = count int $0x80 # execute write () system call ## terminate program via _exit () system call xorl %eax, %eax # %eax = 0 incl %eax # %eax = 1 system call _exit () xorl %ebx, %ebx # %ebx = 0 normal program return code int $0x80 # execute system call _exit () Зачем автор повторяет (сразу после старт) "xorl %ebx, %ebx" и через ряд опять этоже? А дальше "incl %ebx", неужели сначала обнулить а потом добавить *один* быстрее работает чем просто "movl $1, %ebx"? Дальше он повторяет тоже самое с %eax. Нашел на http://database.sarang.net/study/linux/asm/linux-asm.txt
Мне кажется, что это просто ДИЗ_АСМ какого-то ЯВУ. Вот и всё. Вот еще вариант Код (Text): #;as x2.s -o x2.o #;gcc x2.o -lX11 -L/usr/X11R6/lib -o x2 .data prDisplay: .long 0 # указатель на структуру Display nScreenNum: .long 0 # номер экрана nWnd: .long 0 # ID окна rEvent: .space 96,0 # буфер для получения события (сообщения) # вообщето все намного сложней # но длинное слово (32бит)со смещением 0 # обычно содержит тип события prGC: .long 0 msgHello: .asciz "Privet !!!" # какое-то непереводимое ругательство msgHelloLen=.-msgHello-1 .text .global main # без libc мы обойтись не сможем! main: # устанавлиываем связь с сервером pushl $0 call XOpenDisplay addl $4,%esp movl %eax,prDisplay # теперь prDisplay содержит адресс структуры # или равен 0 в случае ошибки # получаем номер основного экрана pushl %eax call XDefaultScreen addl $4,%esp movl %eax,nScreenNum # создаем окно pushl nScreenNum pushl prDisplay call XWhitePixel addl $8,%esp pushl %eax # белый пиксел ) pushl nScreenNum pushl prDisplay call XBlackPixel addl $8,%esp pushl %eax # черный пиксел ) pushl $5 # толщина рамки pushl $100 # высота окна pushl $100 # ширина окна pushl $0 # x pushl $0 # y pushl nScreenNum pushl prDisplay call XRootWindow addl $8,%esp pushl %eax # окно родитель pushl prDisplay # дисплей call XCreateSimpleWindow addl $36,%esp movl %eax,nWnd # номер окна # устанавливаем события обрабатываемые прграммой pushl $(1 | (1 << 15)) # это у нас ExposureMask OR KeyPressMask pushl nWnd pushl prDisplay call XSelectInput addl $12,%esp # показываем окно (проще некуда ;-) ) pushl nWnd pushl prDisplay call XMapWindow addl $8,%esp # самое главное # цикл получения и обработки сообщений wloop: pushl $rEvent # адрес буфера pushl prDisplay # дисплей call XNextEvent addl $8,%esp movl rEvent,%eax # !!! так делать не стоит # но здесь сойдет cmpl $12,%eax je _Expose cmpl $2,%eax je _KeyPress jmp wloop _Expose: # запрос на перерисовку # получаем графический контекст pushl $0 pushl $0 pushl nWnd pushl prDisplay call XCreateGC addl $16,%esp movl %eax,prGC # а кто у на сегодня "черный"? pushl $0 pushl prDisplay call XBlackPixel addl $8,%esp # устанвливаем цвет которым рисуем pushl %eax pushl prGC pushl prDisplay call XSetForeground addl $12,%esp # рисуем текст pushl $msgHelloLen pushl $msgHello pushl $50 pushl $10 pushl prGC pushl nWnd pushl prDisplay call XDrawString addl $28,%esp # освобождаем графический контекст pushl prGC pushl prDisplay call XFreeGC addl $8,%esp jmp wloop _KeyPress: # кто-то нажал на кнопку pushl prDisplay call XCloseDisplay call exit
А можно об этом гдето прочитать в он-лайне? именно об "xor & inc" и mov. (Мне интересно что такого делает "mov" что он проигрывает двум другим вместе взятым, и вообще меня интересуют на данный момент именно такие мелкие *трюки*, например какую технику нужно использовать чтобы получался самый быстрый loop, чтобы создавать мелкие утилиты так чтобы они были the fastest and the lightest ever, хотелось бы под AT&T).
Есть еще классная книжка, там можно подсмотреть очень много полезного. Генри Уоррен мл. "Алгоритмические трюки для програраммистов"
S_Alex у тебя нет случайно этой книжки или где ее можно за бесплатно *купить*? twgt где можно найти "Фога"? прогуглил без успеха.
далеко ходить ненадо http://www.wasm.ru/publist.php?list=10 или http://www.wasm.ru/doclist.php?list=1