SDCC всегда прикручивает во время линковки стандартный crt0.o файл. Это инициализатор программы. И он ВСЕГДА должен лежать с адреса 0x0000.

Опция --code-loc перемещает весь код КРОМЕ того, что содержится в crt0.o

По-хорошему - чтобы вся программа переместилась в нужные адреса необходимо написать свой crt0.o и прицепить его во время линковки.

Так что просто скомпилировать не получится.