我有来自github https://github.com/akatrevorjay/edid-generator
的脚本是用汇编编写的,现在我想用这个Edid Stuff做更多的动作,因为我从来没有用Python编写程序集。 为此,我需要知道多少字节
.ascii
.fill 7,2,0x0101
.long
.data
通常必须在python中“转换”它。
如果有帮助,这里是每个代码的完整代码行:
start1: .ascii "Linux #0"
.fill 7,2,0x0101 /* Unused */
serial_number: .long SERIAL
.data (Dont have more here)
答案 0 :(得分:2)
这些很简单
.long value
放置一个长值(4个字节).word value
放置一个字值(2个字节).byte value
放置一个字节值(1个字节).ascii "text"
只是放置没有NUL终止符的文本字节实施例
.ascii "HELLO"
与
相同.byte 'H'
.byte 'E'
.byte 'L'
.byte 'L'
.byte 'O'
与
相同.byte 'H', 'E', 'L', 'L', 'O'
这个不太明显:
.fill repeat , size , value
它会将repeat times
值value
放入size
<强>实施例强>
.fill 3, 2, 0xab
与
相同 .word 0xab, 0xab, 0xab
.fill 3, 1, 0xab
与
相同 .byte 0xab, 0xab, 0xab
完整示例:
.ascii "HELLO"
.fill 3,2,0xab
.word 5
.long 6
这将在一个小端系统上为你提供内存中的这些字节:
'H', 'E', 'L', 'L', 'O', 0, 0xab, 0, 0xab, 0, 0xab, 0, 5, 0, 0, 0, 6
| .ASCII | .FILL | .WORD | .LONG |
答案 1 :(得分:1)
我到目前为止发现的是,.long X
表示32位 - 所以我可以将其转换为4字节并获得相同的结果,对吧?
在这里找到: What .long 0xXXXXXXXX stands for in asm?
我看到的另一件事是,例如.fill 50,0xAB,1
定义了包含0xAB的50个字节,但“1”在这里是什么意思?