nasm/rdoff/test/rdftest1.asm

54 lines
1.3 KiB
NASM
Raw Normal View History

2002-05-01 04:52:49 +08:00
;; program to test RDOFF production and linkage
;; items to test include:
;; [1] relocation within the same segment in each module
;; [2] relocation to different segments in same module
;; [3] relocation to same segment in different module
;; [4] relocation to different segment in different module
;; [5] relative relocation to same module
;; [6] relative relocation to different module
;; [7] correct generation of BSS addresses
[SECTION .text]
[BITS 32]
_main:
mov ax,localdata ; [2] (16 bit) => 66 b8 0000
mov eax,localdata2 ; [2] (32 bit) => b8 0000000a
[EXTERN _fardata]
mov eax,[_fardata] ; [4] => a1 00000000 (+20)
mov cx,next ; [1] => 66 b9 0012
next:
call localproc ; [5] => e8 00000019
[EXTERN _farproc]
mov eax,_farproc ; [3] => b8 00000000 (+40+0)
call _farproc ; [6] => e8 -$ (-0+40+0) (=1f)
mov eax,localbss ; [7] => b8 00000000
[GLOBAL _term]
_term: xor ax,ax ; => 66 31 c0
int 21h ; => cd 21
jmp _term ; => e9 -0a (=fffffff6)
localproc:
ret ; => c3
[GLOBAL _test1proc]
_test1proc:
call localproc ; [5] => e8 -$ (-0+0+?) (=-6=fffffffa)
ret ; => c3
[SECTION .data]
[GLOBAL localdata2]
localdata: db 'localdata',0
localdata2: db 'localdata2',0
farref: dd _fardata ; [3] => 0 (+20)
localref: dd _main ; [2] => 0 (+0)
[SECTION .bss]
localbss: resw 4 ; reserve 8 bytes BSS