查看由 NASM 生成的列表文件时,我看到有三种操作码:
- 没有括号。
- 带圆括号。
- 带方括号。
他们是什么意思?什么时候使用它们?
这是一个展示上述所有内容的列表文件示例:
1 section .text
2 extern printf
3 extern fgets
4 00000000 313233 str3: db "123"
5 main:
6 00000003 68[00000000] push str1
7 00000008 68[09000000] push str2
8 0000000D 68[00000000] push str3
9 00000012 E8(00000000) call func1
10 00000017 E8(04000000) call func2
11 0000001C E80B000000 call func3
12 00000021 E8(00000000) call printf
13 00000026 E8(00000000) call fgets
14 0000002B C3 ret
15
16 0000002C 90 func3: nop
17 0000002D C3 ret
18
19
20 section .text1
21 00000000 90 func1: nop
22 00000001 90 nop
23 00000002 90 nop
24 00000003 C3 ret
25
26 00000004 90 func2: nop
27 00000005 90 nop
28 00000006 90 nop
29 00000007 C3 ret
30
31
32 section .data
33
34 00000000 313233343536373839 str1: db "123456789"
35 00000009 313233343536373839 str2: db "123456789"