Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

win7ÉϵÄcºÍasm»¥µ÷ÓÃ

    ×î½üÔÚÑо¿²Ù×÷ϵͳ£¬¡¶×Ô¼º¶¯ÊÖд²Ù×÷ϵͳ¡·ÉϵÚ5Õ½²ÁËasmºÍcº¯ÊýÖ®¼ä»¥µ÷Óã¬Ä¿µÄÊÇʹÓÃcÀ´Ð´²Ù×÷ϵͳÄں˵ĴúÂ룬±Ï¾¹Óûã±àд´úÂ뻹ÊǺܷÑʱ¼äµÄÊ¡£
    ÅäÖÃLinux¿ª·¢»·¾³ÊµÔÚÊÇÌ«Âé·³£¬Òª×°ÐéÄâ»ú£¬»¹ÒªÅäÖÃÀϰëÌì¡£ÓÚÊǾÍÏëÄܶ¼ÔÚwindows»·¾³ÏÂʵÏÖ»¥µ÷Ó㬺Ü×ÔÈ»µÄÏëµ½ÁËmingw½»²æ»·¾³¡£ÓÚÊÇÏÂÁËÒ»¸öwin32°æ±¾µÄnasm±àÒëÆ÷£¬ÓÃnasm±àÒë»ã±à£¬ÓÃgcc±àÒëc£¬²éÁËÒ»ÏÂnasmµÄ±àÒëÑ¡Ïî-f¿ÉÒÔÖ¸¶¨asmÎļþµÄÄ¿±ê¸ñʽ£¬¹À¼Æ¿ÉÐУ¬µ«¿¼Âǵ½mingwÊǽ»²æ»·¾³£¬¸Ð¾õÉÏ»¹ÊÇÓÃcl.exeÀ´±àcÎļþ±È½ÏºÃ£¬·´ÕýnasmÒ²Ö§³Öµ¼³öwin32¸ñʽµÄobjÎļþ¡£ÊÔÁËһϿÉÐУ¬ÏÖ½«´úÂëÌùÉÏÀ´¡£Ò»¹²Èý¸öÎļþ£ºbar.c, foo.asm, makefile.ÄÚÈÝÈçÏ£º
1. bar.c
#include <stdio.h>
void myprint(); // º¯ÊýÉùÃ÷
int choose(int a, int b)
{
int c;
// __asm int 3; // ¼Ó¶Ïµã»á½øÈëVSµ÷ÊÔÆ÷
__asm{ // ÄÚǶ»ã±à²âÊÔ£¬µÈ¼ÛÓÚ£ºc = b + 1;
mov eax, dword ptr [b]
inc eax
mov dword ptr [c], eax
}
printf("a = %d, b = %d, c = %d.\n", a, b, c); // Êä³ö£ºa = 3, b = 4, c = 5.
myprint(); // µ÷ÓÃfoo.asmÖеÄ_myprintº¯Êý
return 0;
}
2. foo.asm
extern _choose ; int choose(int a, int b); ±àÒëÆ÷±à³ÉµÄobjÎļþ»á½«cº¯ÊýÃûǰ×Ô¶¯¼ÓÏ»®Ïß
[section .data] ; Êý¾ÝÔÚ´Ë
num1st dd 3
num2nd dd 4
[section .text] ; ´úÂëÔÚ´Ë
global _main ; exeÈë¿Úº¯Êý£¬Í¬ÑùÒª¼ÓÏ»®Ïß
global _myprint ; µ¼³öÕâ¸öº¯ÊýΪÁËÈà bar.c ʹÓÃ
_main:
push ebp
mov esp, ebp
push dword [num2nd] ; ²ÎÊýÈëÕ»£¬´ÓÓÒÖÁ×ó
push dword [num1st]
call _choose ; µ÷ÓÃchoose()
add esp, 8 ; È¥µô²ÎÊý
pop ebp
ret
; void myprint(char* msg, int len)
_myprint: ; ¿Õµ÷ÓÃ
ret 
3. makefile
#¼ÓZi£¬/DEBUG²ÎÊý¿ÉÒÔ½øÈëvsµ÷ÊÔ
CL=cl /Zi /c
LINK=link /DEBUG
#cl /Zi main.cpp, Ò²¿É±àÒë´ø½øvs2008µ÷ÊÔµÄÐÅÏ¢¡£
main.exe : foo.obj bar.obj
$(LINK) /OUT:main.exe foo.obj bar.obj
foo.obj : foo.asm
nasm -f win32 foo.asm -o foo.obj
bar.obj : bar.c
$(CL) bar.c


Ïà¹ØÎĵµ£º

Ê·ÉÏ×î¼òµ¥ÔªµÄpro*c³ÌÐò

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
EXEC SQL include sqlca;
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
EXEC SQL BEGIN DECLARE SECTION;
       & ......

Cר¼Ò±à³Ìѧϰ±Ê¼Ç(3)

µÚ8ÕÂ:ÔÙÂÛÊý×é
1.ʲôʱºòÊý×éºÍÖ¸ÕëÊÇÏàͬµÄ
CÓïÑÔ±ê×¢¶Ô´Ë×÷ÁËÈçÏÂ˵Ã÷:
¹æÔò1: ±í´ïʽÖеÄÊý×éÃû(ÓëÉùÃ÷²»Í¬)±»±àÒëÆ÷µ±×÷Ò»¸öÖ¸Ïò¸ÃÊý×éµÚÒ»¸öÔªËØµÄÖ¸Õë.
int a[10], *p, i=2;
¿ÉÒÔͨ¹ýÒÔÏÂÈκÎÒ»ÖÖ·½·¨·ÃÎÊa[i];
p = a; p[i];
p = a; *(p+a);
p = a + i; *p
ÔÚ±í´ïʽÖÐ,Ö¸ÕëºÍÊý×éÊÇ¿ÉÒÔ»¥»»µÄ,ÒòΪËüÃÇÔÚ± ......

ͨѶ¼C³ÌÐò´úÂë

#include <stdio.h>
#include <string.h> /* ³ÌÐò¶à´Îµ÷ÓÃbiodkey()£¬Ó¦°üº¬Í·Îļþbios.h */
#include <bios.h><br>/* ³ÌÐò¶à´Îµ÷ÓÃclrscr()£¬Ó¦°üº¬Í·Îļþconio.h */
#include <conio.h>
#define MAX 100
#define PAGE 2
#define PRINT1 printf("------------------------------ ......

C/C++ ºËÐļ¼Êõ ×ܽá1

µÚ¶þÕ Êý¾ÝÀàÐÍ
 
Ò»¡¢Êý¾ÝÀàÐÍ·ÖÀà
 
1 ÁªºÏÀàÐÍ
2 º¯ÊýÀàÐÍ
3 ÊýÁ¿ÀàÐÍ
3.1ËãÊõÀàÐÍ
     ¢Ù »ù±¾Êý¾ÝÀàÐÍ
            ÕûÐÍ£¨°üÀ¨char£©
            ¸¡µãÐÍ ......

extern extern ¡°C¡±

externÊÇC/C++ÓïÑÔÖбíÃ÷º¯ÊýºÍÈ«¾Ö±äÁ¿×÷Ó÷¶Î§£¨¿É¼ûÐÔ£©.
Ëü¸æËß±àÒëÆ÷£¬ÆäÉùÃ÷µÄº¯ÊýºÍ±äÁ¿¿ÉÒÔÔÚ±¾Ä£¿é»òÆäËüÄ£¿éÖÐʹÓá£
1¡£¶ÔÓÚextern±äÁ¿À´Ëµ£¬½ö½öÊÇÒ»¸ö±äÁ¿µÄÉùÃ÷£¬Æä²¢²»ÊÇÔÚ¶¨Òå·ÖÅäÄÚ´æ¿Õ¼ä¡£Èç¹û¸Ã±äÁ¿¶¨Òå¶à´Î£¬»áÓÐÁ¬½Ó´íÎó
2¡£Í¨³££¬ÔÚÄ£¿éµÄÍ·ÎļþÖжԱ¾Ä£¿éÌṩ¸øÆäËüÄ£¿éÒýÓõĺ¯ÊýºÍ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ