macos - 我收到错误“64 位模式不支持 32 位绝对寻址”
问题描述
我是组装新手。我正在尝试在组装中获得成型三角形。编译时,出现“64 位模式不支持 32 位绝对寻址”错误。你能解释一下我想念什么吗?我做的方式是否正确
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if(c < a + b && b < a + c && a < b + c)
printf("yes");
else
printf("no");
}
这是我的代码。
.data
.yes: .string "Yes"
.no: .string "No"
.global main
tri:
push %rsi
push %rdx
add %rdi, %rsi # a + b
cmp %rdx, %rsi # a + b > c
jle no
pop %rsi
add %rsi, %rdx # c + a
cmp %rdi, %rdx # c + a > b
jle no
pop %rdx
add %rdx, %rdi # b + c
cmp %rsi, %rdi # b + c > a
jle no
mov $.yes, %rdi
mov %rax, %rsi
xor %rax, %rax
call printf
ret
no:
mov $.no, %rdi
mov %rax, %rsi
xor %rax, %rax
call printf
ret
main:
mov $2, %rsi
mov $2, %rdi
mov $3, %rdx
call tri
解决方案
推荐阅读
- docker - Golang 构建在 docker 和 requirements.txt 等效项中
- javascript - 如何使用 Ajax(没有 JQuery)在数据库中插入数据?
- javascript - 正则表达式模式在另一个模式的任何地方
- html - CSS ::after(和 ::before)没有按预期工作
- javascript - Moleculer-Cli 启发项目:如何使用 EJS 代替 Handlebars
- python-3.x - 如何跟踪从站点下载文件的功能的工作
- vhdl - 使用 AXI4 从设备进行 R&W
- sonarqube - 如何使用 SonarSource 语言识别器显示 AST?
- flutter - 在 Textfield 输入后 Flutter Text 不会进一步更新
- outlook-web-addins - Outlook Web 加载项 (Office 1906) 和 Windows 10 build 1903 - 如何清除缓存?