如何解决如何将参数从 C 传递给汇编函数?
我正在尝试编写一些汇编代码以在 ubuntu 32 位机器上使用 write syscall 打印字符串。 到目前为止,我的工作是:
main.c 文件:
extern int my_write();
int main(){
my_write();
return 0;
}
my_write.s 文件:
.globl my_write
.type my_write,@function
.section .data
str: .ascii "this is my string\n"
len: .quad . - str
.section .text
my_write:
mov $0x4,%eax # use the write syscall
mov $0x1,%ebx # write to standard output
mov $str,%ecx
mov $len,%edx
int $0x80 #trap
mov $0x1,%eax #exit syscall
mov $0x0,%ebx #exit status of 0
int $0x80 #trap
我使用以下命令编译文件:
gcc -Wall main.c my_write.s -o main
它确实工作并打印“这是我的字符串”
但是字符串在汇编中是硬编码的。 我的问题是 - 如何从 C 文件中传递我自己的字符串? 类似的东西:
extern int my_write(char *str,int len);
int main(){
char str[] = "this is my string\n";
my_write(str,18);
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。