içinde diğer kaynakları nasıl ekliyorum Kaynaklarımı daha organize dosyalara ayırmaya çalışıyorum, ancak bu kaynaklar dahil olmak üzere bazı sorunlarla karşılaşıyorum.FASM
Bu kaynakları nasıl eklerim? Ana programım PE64 biçimindedir, ancak alt kaynaklarımın biçimini ayarladığımda fasm onu derlemek istemez. Bunu kaldırdığımda fasm, bitiş hakkında (kernel64.inc gibi) ve halihazırda var olan semboller hakkında bir şeyler söylüyor.
include printInt.asm
ana dosyasına nasıl eklemeye çalıştığım budur. Birlikte ihraç ediyorum: FASM- passing parameters to an external procedure
Ama bu da benim için çalışmak ve değildir: Bu konuda buldunuz Ne
;format PE64
include 'win64a.inc'
;entry start
section '.code' code readable executable
start:
mov rcx, 1234567
call printInt
call newline
mov rcx, -54321
call printInt
; invoke ExitProcess, 0
printInt:
push r10
push r11
push r12
push r13
push r14
sub rsp, 32
mov r12, rcx
mov r13, 10
xor r14, r14
test r12, r12
jns .e1
neg r12
mov rcx, 45
call [putchar]
.e1:
.l1:
mov rax, r12
mov rdx, 0
div r13
mov rcx, rdx
add rcx, 0x30
mov r12, rax
push rcx
inc r14
test r12, r12
jnz .l1
mov r12, r14
.l2:
pop rcx
sub rsp, 32
call [putchar]
add rsp, 32
dec r14
jnz .l2
add rsp, 32
pop r14
pop r13
pop r12
pop r11
pop r10
ret
newline:
sub rsp, 32
mov rcx, 0xa
call [putchar]
mov rcx, 0xd
call [putchar]
add rsp, 32
ret
rdtsc64x:
rdtsc
shl rdx, 32
add rax, rdx
mov rdx, 0
ret
;section '.rdata' data readable writeable
; print1 db 'printInt downwards: ', 0
; print2 db 'printInt upwards: ', 0
section '.idata' import data readable writeable
library kernel, 'kernel32.dll',\
msvcrt, 'msvcrt.dll'
;import kernel, ExitProcess, 'ExitProcess'
import msvcrt, printf, 'printf',\
putchar, 'putchar'
geçerli:
export 'printLib.dll',\
printInt, 'printInt'
Bu alt kaynağıdır farklı bir format hakkında.
PE64 biçiminde kendi kaynaklarımı nasıl ekleyebilirim?