Jag hittade exempel på hur man skulle kunna göra...
Kod: Markera allt
//main.c
main()
{
int i = sqr(11);
printf("%d\n",i);
}
//sqr.s
.globl sqr
sqr:
movl 4(%esp), %eax
imull %eax, %eax
ret
Eller vice versa:
Kod: Markera allt
//print.c
print(int i)
{
printf("%d\n",i);
}
//main.s
.globl main
main:
movl $123, %eax
pushl %eax
call print
addl $4, %esp
ret
Problemet jag har är att övertala kompillatorn och länkaren att knåda ihop detta...
För att förvärra det ytterligare så kör jag på en 64-bitars maskin...
Även om man inte behöver 64-bitars kåd så tror jag att det krävs lite extra för att generera 32-bits kåd på en 64-bits maskin...
Vapenhot hjälper tydligen inte på vare sig nasm, gcc eller ld...