我用下面的代码创建了一个简单的C++源文件。汇编语言机器代码
int main() {
int a = 1;
int b = 2;
if(a < b) {
return 1;
}
else if(a > b) {
return 2;
}
else {
return 3;
}
}
我用objdump的命令来获取上述源代码的汇编代码。 并线
INT B = 2;转换为mov DWORD PTR [rbp-0x4],0x2。
而其相应的机器码(十六进制格式)是c7 45 fc 02 00 00 00。
我想知道如何将汇编代码转换为二进制代码。我查阅了x86-64的英特尔参考手册,但由于我是低级编程的新手,所以我无法理解。
“转换”是什么意思?使用程序?手动做? – Shiro
手动转换它。 –
'int b = 2;'不是汇编语言。不同之处在于,C是编译语言,所以'int b = 2;'这行可以用许多不同的方式实现(甚至可以被优化器彻底删除),这取决于编译器将决定什么,如何生成机器码结果由C语言标准定义。汇编语言的方式不同,汇编程序不是这种类型的编译器,当你在Assembly'add rax,rbx'中编写时,它将被编译为这样,不会改变指令,或者被某种优化器删除,所以这更像是“1:1变革”。 – Ped7g