如何使用 Sublime Text 生成程序集输出?
How to produce assembly output with Sublime Text?
我在 Sublime Text 2 中编译 C
文件时创建了一个自定义构建命令,它工作正常。
output_c.sublime-build
文件如下:
{
"cmd": "gcc $file_base_name.c -g -O3 -m32 -std=c99 -fverbose-asm -fno-inline -save-temps -Wall -Werror -o $file_base_name.exe"
}
然后,我使用以下 output_asm.sublime-build
命令来创建更具可读性的程序集文件:
{
"cmd": "objdump -d -M intel $file_base_name.o > $file_base_name.asm"
}
但是,第二个命令(我的意思是,第二个 output_asm.sublime-build
文件)将输出转储到屏幕上(就在 Sublime Text 屏幕的状态行上方),而不是创建 $file_base_name.asm
文件.
关于这个问题,我有两个问题:
- 如何格式化 objdump 命令,以便将程序集输出写入文本文件?
- 如何将这两个构建命令合并到一个
output_combined.sublime-build
文件中,以便合并的命令文件同时创建 .exe
和 .asm
文件?
(系统:Windows10)
为您解答问题:
- 如果您使用 shell 命令,例如
>
,您必须添加 "shell": true
作为参数(或者在 ST3 中使用 shell_cmd
而不是 cmd
)
- 如果你在shell中使用
cmd
,那么你可以将这两个命令与&&
结合起来(如果第一个命令成功则执行第二个命令)
此外,我建议添加范围 selector
、working_dir
(尤其是当您使用 file_base_name
时)和 file_regex
(单击跳转到错误).这导致以下构建系统:
{
"cmd": "gcc $file_name -g -O3 -m32 -std=c99 -fverbose-asm -fno-inline -save-temps -Wall -Werror -o $file_base_name.exe && objdump -d -M intel $file_base_name.o > $file_base_name.asm",
"shell": true,
"working_dir": "$file_path",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c"
}
我在 Sublime Text 2 中编译 C
文件时创建了一个自定义构建命令,它工作正常。
output_c.sublime-build
文件如下:
{
"cmd": "gcc $file_base_name.c -g -O3 -m32 -std=c99 -fverbose-asm -fno-inline -save-temps -Wall -Werror -o $file_base_name.exe"
}
然后,我使用以下 output_asm.sublime-build
命令来创建更具可读性的程序集文件:
{
"cmd": "objdump -d -M intel $file_base_name.o > $file_base_name.asm"
}
但是,第二个命令(我的意思是,第二个 output_asm.sublime-build
文件)将输出转储到屏幕上(就在 Sublime Text 屏幕的状态行上方),而不是创建 $file_base_name.asm
文件.
关于这个问题,我有两个问题:
- 如何格式化 objdump 命令,以便将程序集输出写入文本文件?
- 如何将这两个构建命令合并到一个
output_combined.sublime-build
文件中,以便合并的命令文件同时创建.exe
和.asm
文件?
(系统:Windows10)
为您解答问题:
- 如果您使用 shell 命令,例如
>
,您必须添加"shell": true
作为参数(或者在 ST3 中使用shell_cmd
而不是cmd
) - 如果你在shell中使用
cmd
,那么你可以将这两个命令与&&
结合起来(如果第一个命令成功则执行第二个命令)
此外,我建议添加范围 selector
、working_dir
(尤其是当您使用 file_base_name
时)和 file_regex
(单击跳转到错误).这导致以下构建系统:
{
"cmd": "gcc $file_name -g -O3 -m32 -std=c99 -fverbose-asm -fno-inline -save-temps -Wall -Werror -o $file_base_name.exe && objdump -d -M intel $file_base_name.o > $file_base_name.asm",
"shell": true,
"working_dir": "$file_path",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c"
}