Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 为什么首先在汇编中转换代码很重要?_Assembly_Compiler Construction_Kernel - Fatal编程技术网

Assembly 为什么首先在汇编中转换代码很重要?

Assembly 为什么首先在汇编中转换代码很重要?,assembly,compiler-construction,kernel,Assembly,Compiler Construction,Kernel,在学习逆向工程的过程中,我了解到组装是查看和攻击封闭源代码软件的最佳方式。为什么像C/C++这样的语言需要将代码转换成汇编语言,为什么它不能直接转换成机器语言 其次,为什么每次都需要将所有代码段(如.stack、.bss)映射到同一位置(虚拟)?在这种情况下,“汇编程序”只是机器代码的“人类可读形式”。C和C++编译器通常生成机器代码,但是人类读二进制代码的时间很难(即使当它以更可读的十六进制或八进制形式出现时,也很难“翻译”)。p> 一些编译器,例如即时编译器,会输出机器代码。但一般来说,通过

在学习逆向工程的过程中,我了解到组装是查看和攻击封闭源代码软件的最佳方式。为什么像C/C++这样的语言需要将代码转换成汇编语言,为什么它不能直接转换成机器语言


其次,为什么每次都需要将所有代码段(如.stack、.bss)映射到同一位置(虚拟)?

在这种情况下,“汇编程序”只是机器代码的“人类可读形式”。C和C++编译器通常生成机器代码,但是人类读二进制代码的时间很难(即使当它以更可读的十六进制或八进制形式出现时,也很难“翻译”)。p> 一些编译器,例如即时编译器,会输出机器代码。但一般来说,通过检查汇编语言而不是机器代码,作为人工调试编译器要容易得多。在某种程度上,这是“unix方式”,为现有工具添加了另一层,等等。在这种情况下,目标平台需要存在汇编器和链接器,希望这是一个可以理解的论点。然后,您只需生成汇编语言并进行可视化调试,然后使用现有的汇编程序和链接器将其转换为可用的机器代码。

它将转换为机器语言。您正在查看程序内存上的反汇编结果。+1。哦这就是为什么汇编随dis-assembler而变化。汇编语言也取决于处理器。。因此,汇编代码依赖于处理器。你问了很多问题,却没有给出足够的上下文、解释和具体示例。还有谁说这些东西是“必要的”@jbat100:我在Linux的/proc数据结构中见过它们。