je me suis amusé à reproduire le fonctionnement des ROM CALLS sur un 8051. voici ce que ça donne, je crois que le code est à peu près correct mais pas du tout optimisé, pour l'instant (généré par sdcc avec ses options les plus basiques)
#define ROM_CALL_TABLE 0x0004
#define __jmp_tbl (*(__code void * __code * __code *)ROM_CALL_TABLE)
#define _rom_call(type,args,intindex) (*((type(*)args)(__jmp_tbl[intindex])))
#define SerialInit _rom_call(void,(void),0)
#define SerialAvailable _rom_call(unsigned char,(void),1)
#define SerialRead _rom_call(char,(void),2)
#define SerialWrite _rom_call(void,(const char),3)
131 ; src\main.c:4: SerialInit();
0000 90 00 04 132 mov dptr,#(0x04&0x00ff)
0003 E4 133 clr a
0004 93 134 movc a,@a+dptr
0005 FA 135 mov r2,a
0006 A3 136 inc dptr
0007 E4 137 clr a
0008 93 138 movc a,@a+dptr
0009 FB 139 mov r3,a
000A 8A 82 140 mov dpl,r2
000C 8B 83 141 mov dph,r3
000E E4 142 clr a
000F 93 143 movc a,@a+dptr
0010 FA 144 mov r2,a
0011 A3 145 inc dptr
0012 E4 146 clr a
0013 93 147 movc a,@a+dptr
0014 FB 148 mov r3,a
0015 C0 02 149 push ar2
0017 C0 03 150 push ar3
0019 8A 82 151 mov dpl,r2
001B 8B 83 152 mov dph,r3
001D 12s00r00 153 lcall __sdcc_call_dptr
0020 D0 03 154 pop ar3
0022 D0 02 155 pop ar2
.....
220 ; src\main.c:8: SerialWrite('l');
0082 90 00 03 221 mov dptr,#(0x04&0x00ff)
0085 E4 222 clr a
0086 93 223 movc a,@a+dptr
0087 FA 224 mov r2,a
0088 A3 225 inc dptr
0089 E4 226 clr a
008A 93 227 movc a,@a+dptr
008B FB 228 mov r3,a
008C 74 06 229 mov a,#0x06
008E 2A 230 add a,r2
008F F5 82 231 mov dpl,a
0091 E4 232 clr a
0092 3B 233 addc a,r3
0093 F5 83 234 mov dph,a
0095 E4 235 clr a
0096 93 236 movc a,@a+dptr
0097 FA 237 mov r2,a
0098 A3 238 inc dptr
0099 E4 239 clr a
009A 93 240 movc a,@a+dptr
009B FB 241 mov r3,a
009C C0 02 242 push ar2
009E C0 03 243 push ar3
00A0 74 6C 244 mov a,#0x6C
00A2 C0 E0 245 push acc
00A4 8A 82 246 mov dpl,r2
00A6 8B 83 247 mov dph,r3
00A8 12s00r00 248 lcall __sdcc_call_dptr
004D 15 81 185 dec sp
004F D0 03 186 pop ar3
0051 D0 02 187 pop ar2

(et optimisé c'est pareil en fait

)