V8 引擎是否知道如何使用 Intel 语法打印生成的机器代码?
Does V8 engine know how to print generated machine code using Intel syntax?
我正在使用 D8 shell 和标志 --print-opt-code
打印 TurboFan 生成的代码。
但是,代码是使用 AT&T 语法打印的。我不熟悉它,但熟悉英特尔语法。我在 d8 --help
中进行了搜索,但没有找到相应的选项。 V8 是否可以选择使用 Intel 语法打印程序集?如果没有,是否有解决方法,例如我可以 运行 与 D8 一起将 AT&T 语法转换为 Intel 语法的程序?
(此处为 V8 开发人员。)
V8 只支持一种打印反汇编的语法。它非常接近 Intel 语法:目标在源之前(例如 movl eax, 2
),间接内存地址如 [eax+ebx*2+1]
.
参考 https://en.wikipedia.org/wiki/X86_assembly_language#Syntax,我想你可以说 V8 从 AT&T 语法中获取的一个约定是操作宽度被编码为指令名称的后缀,例如movl
是 4 字节移动,movq
是 8 字节移动,testb
是 1 字节测试。
我正在使用 D8 shell 和标志 --print-opt-code
打印 TurboFan 生成的代码。
但是,代码是使用 AT&T 语法打印的。我不熟悉它,但熟悉英特尔语法。我在 d8 --help
中进行了搜索,但没有找到相应的选项。 V8 是否可以选择使用 Intel 语法打印程序集?如果没有,是否有解决方法,例如我可以 运行 与 D8 一起将 AT&T 语法转换为 Intel 语法的程序?
(此处为 V8 开发人员。)
V8 只支持一种打印反汇编的语法。它非常接近 Intel 语法:目标在源之前(例如 movl eax, 2
),间接内存地址如 [eax+ebx*2+1]
.
参考 https://en.wikipedia.org/wiki/X86_assembly_language#Syntax,我想你可以说 V8 从 AT&T 语法中获取的一个约定是操作宽度被编码为指令名称的后缀,例如movl
是 4 字节移动,movq
是 8 字节移动,testb
是 1 字节测试。