On Sun, Oct 17, 2004 at 12:14:15AM +0300, Dimitar Terziev wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> ÐÐÐÐ ÐÐ ÐÐÐÐÑÐ ÐÐ ÐÐÐÑÐÐÑ ÐÑÐÐÑÐÐÐÐ ÐÐ
> ÐÑÐÐÐÐÐÑ, ÐÐÑÐ ÐÑ ÑÑÐ ÑÐÑÐÐ
> ÐÐÐÐÐÐÐ ÐÐÐ-ÐÐÐÑÐÐÑÐ. Ð ÐÐÑÐÐÐÑÐ ÐÐ ÐÐÐÐ ÐÑÐÐÑ
> ÐÑÐÐÐÐÐ - ÐÐÑÐÑ ÐÐ
> ÐÑÐ Visual C++ Ð ÐÐÐÐÑÐ. ÐÐÐ ÐÐÑÑÐ ÐÑÐÐÐ ÐÐÐÐ.... ÑÐ
> ÐÑÐÑÐÑÐ Ð ÐÐÐ
> ÐÑÐ KDevelop ÐÐÐÑÐÐÐÑ ÑÐ ÐÑÐÐÐÐÐÑ ÐÑÐÐÐÐÐÑÑÐÐ
> ÐÐÑÑÑÑÐÑÐÐ? ÐÐÐÐ Ð
> ÑÐÐÐÐÐÑÑ:
ÐÑÐÑÐÑÑÑ ÐÐ Ð ÐÑÑÐÐ ÑÐÑÑÐÐÐ Ñ KDevelop, Ð Ñ
ÐÐÐÐÐÐÐÑÐÑÐ, ÐÐÐÑÐ
ÐÐÐÐÐÐÐÐÑ. ÐÐÐÐ, ÐÐÐÑÐ ÑÐ ÐÐÑÐÑÐÑÑÐÐ Ð ÐÐÐ ÑÐ
ÐÐÐÐÐÐÐÐ inline
assembly Ñ GCC[1]. Ð google ÑÐ ÐÐÐÐÑÐÑ ÐÐÑÑÐÑÑÑÐÐ
ÐÐÐÑÐÐÐÑÐÑÐÑ ÐÐ
ÐÑÐÑÐÑÐ.
> <Cut>
> ÐÐÐÐ ÐÐÑÐ ÐÐÑÐÐ Ð ÐÐÐÐÑÐ. ÐÐÐÑÐ ÑÐÑ ÐÐ ÐÐ ÑÐ
> ÐÑÐÐ ÐÐ ÑÐ ÐÐÑÑÐÐÐÑÐÐ
> ÐÐÐÐ ÑÐÐÐ ÐÐ ÐÐ ÐÐÑÐ ÐÑÐÑÑÐÑÐÐ ÐÐ ÐÑÐÐÐÐÐÐÑ, Ð
> ÐÑÐÐÐ ÐÐ ÑÐ ÐÐ ÐÑÐÐÑ
> Ð ÐÐÐÑÐÑ. ÐÑÐÑÐÑÐ ÐÐ Ð ÐÐÐ? ÐÑÐÐÐÐÑ ÐÐ ÐÐÐÐÑÐ
> ÐÐÑÑÑÑÐÑÐÐÑÐ ÐÐ
> ÑÐÐÐÐÐÑ ÐÐÑÐÐ:
>
> __asm__ (
>
> "mov eax,a"
> .....
> .....
> .....
> );
ÐÐÑÑÐ ÑÐ ÑÐÑÑÐÐ ÑÐÐÑÐÐÑÐÑÐ ÐÐ GCC :) ÐÐÐÐÐÐ GCC
ÐÐÐÐÐÐÐÐ gas[2] (GNU
assembler) ÐÐ ÐÑÐÐÐÐÐÑ, ÑÐ ÑÑÑÐÐÐ ÐÐ ÐÐÐÐÐÐÑ ÐÐÐÐÐÐÑ
ÑÐÐÑÐÐÑÐÑ.
ÐÑÐÐÑÐÐÐÑÐ, ÐÐÑÑÐ ÑÐ ÐÑÐÐÐÐÐÐ Ð ÐÐÑÐÐÐ ÐÐ MASM
(Microsoft assember),
ÐÐÐÑÐ ÐÐÐÐÐÐÐÐ Intel ÑÐÐÑÐÐÑÐÑ, ÐÐÐÐÑÐ gas
ÐÐÐÐÐÐÐÐ ÐÐ&Ð ÑÐÐÑÐÐÑÐÑ.
ÐÑÐ ÐÐÐÐ ÐÑÐÐÐÑ[3] ÐÐ GCC:
__asm__ ("
movl $1, %eax // exit syscall
xor %ebx, %ebx // exit status 0
int $0x80 // call kernel
");
ÐÑÐÐÐ ÑÐÐÐ, ÐÑÐ inline assembly Ñ GCC ÐÐ ÐÐÐÐÑ ÐÐ ÑÐ
ÐÐÑÑÑÐÑ ÐÑÐ
ÐÑÐÑÐÐÐÑÐÑÐ ÐÐ ÑÑÐÐÑÐÑÑÐ ÐÐ ÐÐÑÐÐÐ, ÐÐ ÐÐÐÑÐ ÐÐ
ÐÑÐÐÐÑ Ñ VC++ (mov
eax,a). ÐÑÑÐÐÐ ÐÐ ÐÑÐÐÐÑÐÑ Ð ÐÐÐÐÐ
ÐÐÑÐÐÐÐÐÐÑÐÐÐÐÑÑ ÐÑÐÑÐÐÐÑÐÑÐ ÐÐÐÐÑ
ÐÑÑÐÐÐ Ð ÑÑÐÐÐ, ÐÐ ÐÐ ÐÐÐÐÑ ÐÐ ÐÐ ÐÑÐÐÐÑÑÐÑ
ÐÐÑÐÐ Ð ÑÐÐÐÑÑÑÐ.
ÐÐÐÐÐÐÐÐÐÐ ÑÐÐÐ ÑÑÐÐÐ Ð ÐÐÑÐÑÐÐ ÑÐÐÑÐÐÑÐÑÐÐ
ÑÐÐ, ÐÐ ÐÐ ÐÐÐÐ
ÐÐÑÐÐ ÐÐ ÐÐ ÐÐÐÐÐÐÑ. ÐÐÐ ÐÐÐÑ
foo(int bar, char *baz, float *moo)
ÐÐ ÑÑÑÐÐÐÐÐ ÐÐÐÐÑÐÑÐ ÑÑÐÐÑÐÑ ÐÐ ÐÐÐÑÐ (pushl) Ð
ÑÑÐÐÐ ÐÑÑÐÐ moo, ÐÐÑÐÐ
baz Ð ÐÐÐÑÐÑ bar, ÐÐ ÐÐ ÐÐÐÐ ÐÑÐ ÑÑÐÐÑÐÑ foo Ñ popl %eax
ÐÐ ÐÐÐÐÐ
ÐÑÑÐÐÑ ÐÑÐÑÐÐÐÑ - bar. ÐÑÐÐÐÐ - ÐÑÐÐÐÑÐ Ð
ÐÐÐÑÐÐÐÑÐÑÐÑÑÐ ÐÐÐÐÐ
ÐÐÐÐÐÐÑÐÑ ÑÐ ÐÐÐÐÐÐÐÐ ÐÐÐ ÐÐÐÑÐÐÐÐÐÑÐÐ ÐÑÐÐÑ
ÐÑÐÐÑÐÐÐÐ Ð ÐÐÐ Ñ ÐÑÐÑÐ
ÑÐ :)
ÐÐÐ ÐÐÐÐÐÐÐÐÑ ÑÐÑÑÐÐÐÐ ÐÐÐÐÐÐÐÐÐÑ[4],
ÐÐÐÐÐÐÑÐÑÑÐ ÐÐ ÐÐÐÐÐÐ Ð ÑÐÐÐÐÐÑÐ:
ÐÐÐÐÑÑÑ ÐÐ ÐÐÐÐÐÐÐÐÐÑÐ ÑÐ ÑÐÐÐÐ Ð EAX, a
ÐÑÐÑÐÐÐÑÐÑÐ ÐÑÐÐÐÑ ÐÐÐÑÐÐ Ð
ÑÐÐÐÑÑÑÐÑÐ EBX, ECX, EDX, ESI, EDI Ð EBP. Ð.Ð. ÐÐÐ ÐÐÐÑ
write(int d, const void *buf, size_t nbytes)
'int d' ÐÑÐÐÐ Ð EBX, 'const void *buf' Ð ECX Ð 'size_t nbytes' Ð EDX.
ÐÐÐ ÐÐÐÑ ÑÐÑÑÐÐÐÐ ÐÐÐÐÐÐÐÐÐ Ñ ÐÐÐÐÑÐ ÐÑ 6
ÐÑÐÑÐÐÐÑÐ ÑÐ ÑÑÑÐÐÐ ÐÐ
ÐÑÐÐÐÑ ÐÐÐÐÐ ÑÑÑ ÑÑÐÐÐ :)
ÐÐ-ÐÐÐÐÑÐÑÐÐ Ð ÑÐÐÑÐÑÐÐÐÑ ÑÐÐÑÐÐÑÐÑ ÐÐ GCC inline
assembly:
__asm__("<asm routine>" : output : input : modify);
ÐÑÐ ÐÐÐÐ ÐÐÐÐ ÐÐ ÐÐÐÐÐÐÑ ÐÐÐ ÐÑÐÐÐÐÐÐÐÐ ÑÐ
ÑÐÑÐÐÑ ÐÐ ÐÑÐÐ Ð ÐÐÑÐÐ,
ÐÐÐÑÐ Ð ÐÐÐ ÑÐ ÐÑÐÐÑ ÐÑÐÐÐÐÐÐÐ. ÐÑÐÐÐÐÐÐÐ
ÐÐÐÑÐÐÐÑÐÑÐÑÑÐ ÐÐ ÑÐÐÐÑÐ.
ÐÐÐÐ ÐÐÑÐ ÐÐÐÑÐÐÑ ÐÑÐÑÐÐ ÑÐÐÐ, ÐÐ ÑÐ ÐÐÐ Ð ÐÐÐÐ
ÐÑÐÐÐÐÐÐÐÐÐ, ÐÐÐÑÐ
ÐÐÐÐ ÐÐ ÑÐ ÑÐÐÑÑÐ ÑÐÐÐÐÐÑÐ ÐÐ ÐÑÐÐÑÐ Ñ gas. ÐÐÐ
ÑÐ ÐÐÑÑÐÐÐÑÐÑ NASM
(Netwide assembler) ÑÐ ÐÐÐÐÑ ÐÐ ÐÐÑÐÑ ÐÐ ÐÑÐÐÐÐÐÑ Ñ Intel
ÑÐÐÑÐÐÑÐÑ,
ÐÐÐÑÐ ÑÐ ÐÑ ÑÐÐÐÐÐÐ ÑÐÐÐ. Ð ÐÐÐÑÑÐ ÐÐ ÐÐÐÐÐÐÐÐÑ
inline assembly,
ÐÐÐÐÑ ÐÐÐÑÐÐÐ ÐÐ ÑÐ ÐÐÐÐÑÐÑ ÐÐ ÐÑÐÐÐÐÐÑ
ÐÑÐÐÐÐÐ ÑÑÐÐÑÐÑ, ÐÐÑÐÐ ÐÐ Ñ
ÐÐÐÐÐÐÐÑÐÑ Ð ÐÐÐÐÐÐÑ Ñ ÐÐÐÐÐÐÑÐ ÐÑÐÐÑÐÐÐ.
ÐÐÐÐÑÐÐÐ,
ÐÐÐÑÐÑ
[1]http://gcc.gnu.org/onlinedocs/gcc-3.4.2/gcc/
[2]http://sources.redhat.com/binutils/docs-2.15/as/index.html
[3]http://nuieee.fe.up.pt/~ee97034/la/linasm.html
[4]http://www.win.tue.nl/~aeb/linux/lk/lk-4.html
--
Linux is for those who hate Windows.
FreeBSD is for those who love UNIX.
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================