incbin for MSVC

2023-05-20

We have the following C program we'd like to link (main.c):
#include <stdio.h>
extern int fuck(void);
extern char paypal[];
extern char paypalEnd[];
int main(){
    printf("%d\n%.*s\n",fuck(),paypalEnd-paypal,paypal);
    return 0;
}

nasm:

64 bit:

global fuck
global paypal
global paypalEnd
section .text
fuck:
    mov eax,5
    ret
section .data
paypal: incbin "paypal.txt"
paypalEnd:
Assemble with: nasm -f win64 fuck.na
Build with MSVC 64 bit: cl /nologo /O1 /FC /w main.c fuck.obj

32 bit:

global _fuck
global _paypal
global _paypalEnd
section .text
_fuck:
    mov eax,5
    ret
section .data
_paypal: incbin "paypal.txt"
_paypalEnd:
Assemble with: nasm -f win32 fuck.na
Build with MSVC 32 bit: cl /nologo /O1 /FC /w main.c fuck.obj

fasm:

64 bit:

format MS64 COFF
public fuck
public paypal
public paypalEnd
section '.text' code readable executable
fuck:
    mov eax,5
    ret
section '.data' data readable writeable
paypal: file 'paypal.txt'
paypalEnd:
Assemble with: fasm fuck.fa
Build with MSVC 64 bit: cl /nologo /O1 /FC /w main.c fuck.obj