# An example of using the MMX data types (传送MMX整数)
.section .data
values1:
.int 1, -1
values2:
.byte 0x10, 0x05, 0xff, 0x32, 0x47, 0xe4, 0x00, 0x01
.section .text
.globl main
main:
nop
movq values1, %mm0
movq values2, %mm1
movl $1, %eax
movl $0, %ebx
int $0x80
# gcc -g -o 04-movq 04-movq.s -m32
# gdb 调试器查看寄存器值
gdb -q -f 04-movq
Reading symbols from 04-movq...
(gdb) list
warning: Source file is more recent than executable.
1 # An example of using the MMX data types (传送MMX整数)
2
3 .section .data
4 values1:
5 .int 1, -1
6 values2:
7 .byte 0x10, 0x05, 0xff, 0x32, 0x47, 0xe4, 0x00, 0x01
8
9 .section .text
10 .globl main
(gdb)
11 main:
12 nop
13 movq values1, %mm0
14 movq values2, %mm1
15 movl $1, %eax
16 movl $0, %ebx
17 int $0x80
18
19 # gcc -g -o 04-movq 04-movq.s -m32
20
(gdb) b 13
Breakpoint 1 at 0x119e: file 04-movq.s, line 13.
(gdb) r
Starting program: /home/04-movq
Breakpoint 1, main () at 04-movq.s:13
/home/04-movq.s:13:213:beg:0x5655619e
13 movq values1, %mm0
(gdb) s
/home/04-movq.s:14:234:beg:0x565561a5
14 movq values2, %mm1
(gdb) s
/home/04-movq.s:15:255:beg:0x565561ac
15 movl $1, %eax
(gdb) p $mm0
$1 = {uint64 = -4294967295, v2_int32 = {1, -1}, v4_int16 = {1, 0, -1, -1}, v8_int8 = {1, 0, 0, 0, -1, -1, -1,
-1}}
(gdb) p $mm1
$2 = {uint64 = 72308588487312656, v2_int32 = {855573776, 16835655}, v4_int16 = {1296, 13055, -7097, 256},
v8_int8 = {16, 5, -1, 50, 71, -28, 0, 1}} // 十进制
(gdb) p/x $mm1
$3 = {uint64 = 0x100e44732ff0510, v2_int32 = {0x32ff0510, 0x100e447}, v4_int16 = {0x510, 0x32ff, 0xe447, 0x100},
v8_int8 = {0x10, 0x5, 0xff, 0x32, 0x47, 0xe4, 0x0, 0x1}} // 十六进制