assembly - 从 x86 向 C 函数传递参数
问题描述
我正在学习汇编,但我无法理解我的代码出了什么问题。我正在尝试将一个值(在本例中为 4)传递给 C 中的一个函数,该函数只打印该值。但是,当我运行代码时,它会打印 1 而不是 4。我在 Ubuntu 上运行 64 位,并且正在使用 GCC 进行编译。
这是组装:
.extern myprint
.text
.global main
main:
push $4
call myprint
mov $1, %eax
int $0x80
这是C中的函数:
#include <stdio.h>
int myprint(int n) {
printf("%d\n", n);
return 0;
}
解决方案
推荐阅读
- javascript - if 语句不返回任何 TRUE,即使它应该
- java - 从片段调用活动使用接口,但为什么?
- kubernetes-ingress - 同一后端服务中多个路径的 K8s Ingress 规则
- excel - 如何通过从单元格中获取形状名称来引用形状?
- android - Gradle 错误无法解析 com.github.Binary-Finery:Bungee:master-SNAPSHOT
- c# - 将带有计数的嵌套 SQL 转换为 linQ
- sql - 您如何根据记录总数计算具有统计意义的样本量?(Postgres)
- javascript - 需要以不同的方式格式化对象数组
- java - 带有可选按钮的密码字段以使用 vaadin 显示密码
- python - 使用 Python(正则表达式)将数据仅放在数据框中的方括号中