所以我想将这个C语言程序转换为Assembly:
void main
{
int year;
printf("Enter the year: ");
scanf("%d",&year);
if(year%400 ==0 || (year%100 != 0 && year%4 == 0))
{
printf("Year %d is a leap year",year);
}
else
{
printf("Year %d is not a leap year",year);
}
}
你能帮我弄清楚它是如何在Asm中映射的吗?我尝试使用此链接转换它:http://assembly.ynh.io/但我遇到错误:错误:命令失败:/tmp/test683852013.c:2:1:错误:预期'=',',',' ;','asm'或'属性'在'{'标记
之前我很乐意感谢你的帮助。感谢。
答案 0 :(得分:1)
正如评论中指出的那样,您的程序甚至无效。
应该看起来像:
// Include for printf and scanf
#include <stdio.h>
// Main should return an int
int main()
{
int year;
printf("Enter the year: ");
scanf("%d",&year);
if(year%400 ==0 || (year%100 != 0 && year%4 == 0))
{
printf("Year %d is a leap year",year);
}
else
{
printf("Year %d is not a leap year",year);
}
return 0;
}
现在它可以使用您的链接进行转换。
但您也可以使用编译器进行翻译。例如,如果您有gcc,则可以使用以下命令:
gcc -S test_asm.c
它会将其转换为test_asm.s
。
注意:有时您必须使用gcc -S -masm=intel test_asm.c
,但它适用于我而无需其他选项。
关于此选项的手册页说:
-masm=dialect
Output asm instructions using selected dialect. Supported choices
are intel or att (the default one). Darwin does not support intel.
但如果它在我的Mac上不起作用。您可能需要在您的平台上使用它。