我想转换一个仅限数据的输入文件,例如:
.data
.org 0
.equ foo, 42
.asciz "foo"
label:
.long 0xffffffff
.long 0x12345678
.byte foo
.long label
.long bar
.equ bar, 'x'
到具有相应字节序列'f','o','o',0,0xff,0xff,0xff,0xff,0x78,0x56,0x34,0x12,42,4,0,0,0的文件中,'x',0,0,0。
当我用GNU(as -o foo.o -s foo.S
)组装它时,我得到一个400+字节的ELF文件。我如何使GNU(或NASM或任何其他汇编程序)给我简单的二进制表示?我已经研究过GNU作为选项,但无济于事。我可以修改输入格式,如果这样可以使答案更容易(即使用更多不同的伪操作)。
任何暗示都深表赞赏!
此致,Jens
答案 0 :(得分:0)
MASM
汇编到.obj文件中,将LINK
汇编到.exe文件中,然后使用EXE2BIN
实用程序对结果exefile进行后处理。
在TASM中,您将组装成.obj文件,然后将TLINK
与/t/x
参数相关联。
答案 1 :(得分:0)
我挖了一下,找到了一个使用nasm的解决方案,从http://www.nasm.us/抓住。
原始数据的等效指令将是这样的:
org 0
foo equ 42
db "foo", 0
label:
dd 0xffffffff
dd 0x12345678
db foo
dd label
dd bar
bar equ 'x'
使用nasm -f bin -o file.bin file.S
进行汇总。瞧! file.bin
中的普通二进制文件。猜猜这让我成为一个自学者: - )