C中的汇编代码是什么?
what is this assembly code in C?
下面有些汇编代码我不是很懂。我的想法是它毫无意义。很遗憾,我无法提供更多说明信息。 C 中的输出是什么?
0x1000: iretd
0x1001: cli
0x1002: in eax, dx
0x1003: inc byte ptr [rdi]
0x1005: add byte ptr [rax], al
0x1007: add dword ptr [rbx], eax
0x1009: add byte ptr [rax], al
0x100b: add byte ptr [rdx], 0
0x100e: add byte ptr [rax], al
谢谢
iretd
是"return from interrupt",cli
是"clear interrupt flag",意思是禁用所有可屏蔽中断。 C语言不理解中断的概念,所以这不太可能是从C编译的。事实上,这不是一个完整的代码片段。
此外 add byte ptr [rdx], 0
将 0 添加到对我来说没有意义的值,除非它是未优化编译的结果或反汇编非代码的结果。
前四个字节(如果我没有正确重建它们)形成 32 位值 0xFEEDFACF
。
将其放入 google 使我得到:
https://gist.github.com/softboysxp/1084476#file-gistfile1-asm-L15
%define MH_MAGIC_64 0xfeedfacf
你是不是不小心将 Mach-o x64 可执行文件从 Mac OS X 中反汇编为原始机器代码,而不是正确读取文件的元数据,并且只反汇编代码部分?
P.S。在像这样的问题中,还包括源机器代码数据,所以有经验的人可以通过针对不同的平台来检查反汇编,比如 32b x86 或 16b 实模式代码,或者完全不同的 CPU,这可能有助于你会错误地对待带有错误目标平台反汇编的机器代码。我必须先 assemble 你的反汇编才能看到原始字节。
下面有些汇编代码我不是很懂。我的想法是它毫无意义。很遗憾,我无法提供更多说明信息。 C 中的输出是什么?
0x1000: iretd
0x1001: cli
0x1002: in eax, dx
0x1003: inc byte ptr [rdi]
0x1005: add byte ptr [rax], al
0x1007: add dword ptr [rbx], eax
0x1009: add byte ptr [rax], al
0x100b: add byte ptr [rdx], 0
0x100e: add byte ptr [rax], al
谢谢
iretd
是"return from interrupt",cli
是"clear interrupt flag",意思是禁用所有可屏蔽中断。 C语言不理解中断的概念,所以这不太可能是从C编译的。事实上,这不是一个完整的代码片段。
此外 add byte ptr [rdx], 0
将 0 添加到对我来说没有意义的值,除非它是未优化编译的结果或反汇编非代码的结果。
前四个字节(如果我没有正确重建它们)形成 32 位值 0xFEEDFACF
。
将其放入 google 使我得到:
https://gist.github.com/softboysxp/1084476#file-gistfile1-asm-L15
%define MH_MAGIC_64 0xfeedfacf
你是不是不小心将 Mach-o x64 可执行文件从 Mac OS X 中反汇编为原始机器代码,而不是正确读取文件的元数据,并且只反汇编代码部分?
P.S。在像这样的问题中,还包括源机器代码数据,所以有经验的人可以通过针对不同的平台来检查反汇编,比如 32b x86 或 16b 实模式代码,或者完全不同的 CPU,这可能有助于你会错误地对待带有错误目标平台反汇编的机器代码。我必须先 assemble 你的反汇编才能看到原始字节。