> mov rsi, file_load_va + message: [...] This instruction ends up taking 10 bytes: two bytes for the opcode, and a full 8 bytes for the address. We can replace this with mov esi, file_load_va + message to save 5 bytes
Nasm should perform this optimization automatically.
$ cat t.s
bits 64
mov rsi, 0xffffff
$ nasm -o t.o t.s
$ ndisasm -b 64 t.o
00000000 BEFFFFFF00 mov esi,0xffffff
$ nasm --version
NASM version 2.15.05 compiled on Sep 24 2020