Re: 請問macro如何被C 呼叫?
: ===================================================================
: //C51 的 code
: //ice_func.c
: #pragma asm
: getXRAM MACRO _Address, _Shift, _Data
: mov DPTR, #_Address
: movx _Data ,@DPTR+_Shift
: ENDM
: #pragma endasm
: ===================================================================
: //ice_func.h
: BYTE d1, d2;
: extern getXRAM(_Address, _Shift, _Data);
: #define Download64(pBuf) \
: { \
: getXRAM(pBuf, 0, d1);\
: getXRAM(pBuf, 1, d2);\
: DownTwoByte(0x02, d1, d2); \
: }
508: Download64(pBuf);
C:0x09E6 AE50 MOV R6,0x50
C:0x09E8 AF51 MOV R7,0x51
C:0x09EA E55A MOV A,d1(0x5A)
C:0x09EC FB MOV R3,A
C:0x09ED 7A00 MOV R2,#pEP3BUF(0x00)
C:0x09EF E4 CLR A
C:0x09F0 FD MOV R5,A
C:0x09F1 FC MOV R4,A
C:0x09F2 120000 LCALL C:0000
以上是第一次call getXRAM ------>這裡並沒有我的macro code
照我寫的macro 應該是要
mov DPTR, #pBuf
movx d1(0x5A) ,@DPTR+0x00
compiler真的把code翻成 Function Call了 @@"
C:0x09F5 AE50 MOV R6,0x50
C:0x09F7 AF51 MOV R7,0x51
C:0x09F9 E55B MOV A,d2(0x5B)
C:0x09FB FB MOV R3,A
C:0x09FC 7A00 MOV R2,#pEP3BUF(0x00)
C:0x09FE 7D01 MOV R5,#0x01
C:0x0A00 7C00 MOV R4,#pEP3BUF(0x00)
C:0x0A02 120000 LCALL C:0000
以上是第二次call getXRAM ------>這裡並沒有我的macro code
照我寫的macro 應該是要
mov DPTR, #pBuf
movx d2(0x5B) ,@DPTR+0x01
C:0x0A05 75C702 MOV ICEDATA(0xC7),#0x02
C:0x0A08 C2B5 CLR ICEWR(0xB0.5)
C:0x0A0A D2B5 SETB ICEWR(0xB0.5)
--
█████████████████
█ ████████████████
█████████████████
█ ████████████████
█████████████████
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.110.225.167
※ 編輯: ast9869 來自: 123.110.225.167 (05/03 23:11)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 5 篇):