在c语言里怎么调用汇编函数?
代码如下:/*try.c*/void_hlt(void)main(){for(;;){_hlt();}};fuct.asm[bits32]global_hlt_hlt:h...
代码如下:/
*try.c*/
void _hlt(void)
main()
{
for(;;)
{
_hlt();
}
}
;fuct.asm
[bits 32]
global _hlt
_hlt:
hlt
ret 展开
*try.c*/
void _hlt(void)
main()
{
for(;;)
{
_hlt();
}
}
;fuct.asm
[bits 32]
global _hlt
_hlt:
hlt
ret 展开
1个回答
推荐于2016-08-28
展开全部
把汇编写在另一个文件里 在main写个原型声明 再把两个文件同时编译可不可以。
我的gcc编译器里是这样写的
汇编文件m.s
.file "stdio.h"
#hellowrold.s print "hello,world!"
.section .data
output:
.ascii "%d %d %d\0"
.section .text
.globl _fun
_fun:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl 0x8(%ebp), %eax
movl %eax, 0x4(%esp)
movl 0xc(%ebp), %eax
movl %eax, 0x8(%esp)
movl 0x10(%ebp), %eax
movl %eax, 0xc(%esp)
movl $output, %eax
movl %eax, (%esp)
call _printf
movl %ebp, %esp
popl %ebp
ret
.end
主函数前的原型声明 extern int fun(int i, int j, int k);
我的gcc编译器里是这样写的
汇编文件m.s
.file "stdio.h"
#hellowrold.s print "hello,world!"
.section .data
output:
.ascii "%d %d %d\0"
.section .text
.globl _fun
_fun:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl 0x8(%ebp), %eax
movl %eax, 0x4(%esp)
movl 0xc(%ebp), %eax
movl %eax, 0x8(%esp)
movl 0x10(%ebp), %eax
movl %eax, 0xc(%esp)
movl $output, %eax
movl %eax, (%esp)
call _printf
movl %ebp, %esp
popl %ebp
ret
.end
主函数前的原型声明 extern int fun(int i, int j, int k);
追问
这样写的话,那个_hlt函数会出问题:一堆路径……underfined fuction "_hlt"。
追答
你是什么编译器 汇编那个文件编译了吗。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询