我正在为包含 8051 内核的 Cypress EZ-USB FX2LP 进行开发,并且我使用 SDCC 进行编译。
我注意到我可以(有时?)省略__xdata
指针注释,即使使用指向 XDATA 区域的指针,我的固件仍然可以正常运行。
例如,它将使用以下声明编译和执行:
uint16_t crc16(const uint8_t *data, uint8_t len);
代替
uint16_t crc16(__xdata const uint8_t *data, uint8_t len);
据我了解,XDATA 是 16 位可寻址的,而 DATA 是 8 位可寻址的。当 SDCC 编译器可以指向 XDATA 时,它们是否会自动将指针提升为 16 位?