我想在SDCC下编译一个我以前在C51下编译的程序..
// Somewhere in a header file for C51:
sfr TCON = 0xA8; // C51 syntax
// somewhere in a .c-file
#pragma asm
mov TCON, #0
#pragma endasm
这将被翻译成75A800
(十六进制)
opcode direct, #immed
mov: 75 A8 00
当我在 SDCC 下编译这个
opcode direct, #immed
mov: 75 88 00
在我看来,SDCC 忽略了我对 TCON 寄存器的定义,如下所示:
// Somewhere in a header file for SDCC
__sfr __at(0xa8) TCON; // SDCC syntax
所以这是我的问题:
如何告诉 SDCC 使用我在另一个头文件中定义的地址?
整个事情当然是这样的:
#include "the-header-file-that-defines-my-registers.h" // defines TCON
void main(void)
{
// code ..
#pragma asm
// more code ..
mov TCON, #0
#pragma endasm
// more and more code ..
}