64位环境编译链接32位asm和c

# cat bar.c
void myprint(char* msg, int len );


int choose(int a, int b)
{
if (a>b)
{
myprint("the 1st one\n",13);
}
else
{
myprint("the 2nd one\n",13);
}
return 0;
}
# cat foo.asm 
extern choose
[section .data]
num1st dd 3
num2nd dd 4


[section .text]
global _start
global myprint


_start:
push dword [num2nd]
push dword [num1st]
call choose
add esp,8


mov ebx,0
mov eax,1
int 0x80


myprint:
mov edx,[esp+8]
mov ecx,[esp+4]
mov ebx,1
mov eax,4
int 0x80

ret

nasm -f elf -o foo.o foo.asm 

gcc -c -o bar.o bar.c -m32

ld -s -o foobar foo.o bar.o -m elf_i386

./foobar 
the 2nd one


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值