在从c转换为汇编并修复文件以使其运行时,我对DWORD PTR [rbp-4],0等行的含义感到困惑。我假设它将0移入寄存器,但是哪一个?或者我该怎么说它才能让它运行?
例如,我认为以下应该是
if (choice != 'N' && choice != 'F' && choice != 'X'){
printf("Invalid Input. Enter N, F, or X\n");
我有"输入无效..." LC0寄存器中的行。 " JE"意味着如果为false,跳转到L3,那么在第一次比较后它会自动跳转吗?
L5:
mov eax, 0
call menu
;mov BYTE PTR [rbp-5], al
;cmp BYTE PTR [rbp-5], 78
je L3
;cmp BYTE PTR [rbp-5], 70
je L3
;cmp BYTE PTR [rbp-5], 88
je L3
mov edi, LC0
call puts
jmp L2
答案 0 :(得分:0)
本声明
cmp BYTE PTR [rbp-5], 78
表示位于[rbp-5]的字节值与字节值78进行比较。
如果它是DWORD PTR
,则会在两端假设dword大小的值。
此特定操作不涉及寄存器(除了地址的rbp帧寄存器外)。
据我所知,没有LC0
注册。它应该是变量吗?