Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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


Ïà¹ØÎĵµ£º

C bulider¼ÆËãÆ÷³õ²½

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
int   flag=0; // ......

ǶÈëʽLinuxµÄ¼üÅÌÇý¶¯ 1£¨Í¨¹ýI2CʵÏÖ£©

CPU£ºs3c2410
OS£ºLinux Kernel 2.6.30.4
×î½ü¸Õ×öÍêµÄǶÈëʽ¼üÅ̵ÄÇý¶¯£¬ÓÉÓÚ³õ´Î½Ó´¥£¬×ܽáһϡ£
Ê×Ïȼòµ¥ËµËµÕâ¸ö¼üÅ̵ÄʵÏÖÔ­Àí£¬IIC×ÜÏß¹¤×÷Ô­Àíû±ØÒª·Ï»°£¬s3c2410µÄÊÖ²áÖн²µÄºÜÃ÷°×¡£Ó²¼þ·½ÃæÕâ¸ö¼üÅÌͨ¹ýÒ»¸öAVRµ¥Æ¬»ú£¨ATMEGA48£©½ÓÔÚIIC×ÜÏßÉÏ£¬Ò²¾ÍÊÇ˵£¬Ö±½ÓÓëIIC×ÜÏßÁ´½ÓµÄÉ豸²¢²»ÊÇÎÒÃÇÓõļüÅÌ£¬¶øÊÇ ......

Objective C ¿ìËÙÈëÃÅÊ«

CûÓÐÀà
ÕâÈÃÈËºÜÆ£±¹
¶ÔÏóµÄ˵·¨ºÜʱ÷Ö
²»¾ÍÊǼ̳зâ×°×éºÏÈËÈË»á
ÓÒ×ßÊÇC++£¬Õâ¸ö´óÖÚ¶¼ÊìϤËü
×ó×ß¾ÍÊÇobjective-c£¬¶ãÔÚÆ§¾²Æ§¾²µÄÂó½ðËþ
±¾ÊÇͬ¸ùÉúµÄC
ÈçºÎ¸ß¾ÙÃæÏò¶ÔÏóµÄ´óÆì
Çóͬ´æÒì±êÐÂÁ¢ÒìÇÒÌýһһϸ·ÖÇå
¶ÔÏóµÄC
ÊDz»Í¬µÄC
ÀàµÄ´¦ÀíÓëÖÚ²»Í¬Öصã񻂿·Ö
²»Öظ´ÊÇÎҵĿÚÍ·ìø
ÈκÎʱºòÎÒֻ˵һ´Î¸æËß ......

C/C++ ³ÌÐòÉè¼ÆÔ±Ó¦Æ¸³£¼ûÃæÊÔÊÔÌâÉîÈëÆÊÎöÖ®Èý


ÊÔÌâ5£º±àдһ¸öº¯Êý£¬×÷ÓÃÊǰÑÒ»¸öchar×é³ÉµÄ×Ö·û´®Ñ­»·ÓÒÒÆn¸ö¡£±ÈÈçÔ­À´ÊÇ“abcdefghi”Èç¹ûn=2£¬ÒÆÎ»ºóÓ¦¸ÃÊÇ“hiabcdefgh” 
¡¡¡¡º¯ÊýÍ·ÊÇÕâÑùµÄ£º
//pStrÊÇÖ¸ÏòÒÔ'\0'½áβµÄ×Ö·û´®µÄÖ¸Õë
//stepsÊÇÒªÇóÒÆ¶¯µÄn
void LoopMove ( char * pStr, int steps )
{
¡¡//ÇëÌî³ä...
}
¡¡¡¡½ ......

C/C++Öж¯Ì¬Á´½Ó¿âµÄ´´½¨ºÍµ÷ÓÃ

ת×Ô£ºhttp://dev.yesky.com/12/3067012.shtml
¶¯Ì¬Á¬½Ó¿âµÄ´´½¨²½Ö裺
¡¡¡¡Ò»¡¢´´½¨Non-MFC DLL¶¯Ì¬Á´½Ó¿â
¡¡¡¡1¡¢´ò¿ªFile —> New —> ProjectÑ¡ÏѡÔñWin32 Dynamic-Link Library —>sample project
¡¡¡¡—>¹¤³ÌÃû£ºDllDemo
¡¡¡¡2¡¢Ð½¨Ò»¸ö.hÎļþDllDemo.h
ÒÔÏÂÊÇÒýÓÃÆ¬¶Î£º ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ