C51でコンパイルしていたプログラムをSDCCでコンパイルしたい..
// 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
(16 進数)に変換されます。
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 ..
}