cmp command

Synopsis

cmp [.b, .w, .l, .q] addr1 addr2 count

Description

The cmp command is used to compare two memory areas. By default it works on four byte (32-bit) values. By appending .b, .w, .l, .q the size of the values is controlled:

cmp.b

compare 1 byte (8-bit) values

cmp.w

compare 2 byte (16-bit) values

cmp.l

compare 4 byte (32-bit) values

cmp.q

compare 8 byte (64-bit) values

The parameters are used as follows:

addr1

Address of the first memory area.

addr2

Address of the second memory area.

count

Number of bytes to compare (as hexadecimal number).

Example

In the example below the strings “Hello worldn” and “Hello Worldn” are written to memory and then compared.

=> mm.b 0x1000000
01000000: 00 ? 48
01000001: 00 ? 65
01000002: 00 ? 6c
01000003: 00 ? 6c
01000004: 00 ? 6f
01000005: 00 ? 20
01000006: 00 ? 77
01000007: 00 ? 6f
01000008: 00 ? 72
01000009: 00 ? 6c
0100000a: 00 ? 64
0100000b: 00 ? 0d
0100000c: 00 ? => <INTERRUPT>
=> mm.b 0x101000
00101000: 00 ? 48
00101001: 00 ? 65
00101002: 00 ? 6c
00101003: 00 ? 6c
00101004: 00 ? 6f
00101005: 00 ? 20
00101006: 00 ? 57
00101007: 00 ? 6f
00101008: 00 ? 72
00101009: 00 ? 6c
0010100a: 00 ? 64
0010100b: 00 ? 0d
0010100c: 00 ? => <INTERRUPT>
=> cmp 0x1000000 0x101000 0xc
word at 0x01000004 (0x6f77206f) != word at 0x00101004 (0x6f57206f)
Total of 1 word(s) were the same
=> cmp.b 0x1000000 0x101000 0xc
byte at 0x01000006 (0x77) != byte at 0x00101006 (0x57)
Total of 6 byte(s) were the same
=> cmp.w 0x1000000 0x101000 0xc
halfword at 0x01000006 (0x6f77) != halfword at 0x00101006 (0x6f57)
Total of 3 halfword(s) were the same
=> cmp.l 0x1000000 0x101000 0xc
word at 0x01000004 (0x6f77206f) != word at 0x00101004 (0x6f57206f)
Total of 1 word(s) were the same
=> cmp.q 0x1000000 0x101000 0xc
double word at 0x01000000 (0x6f77206f6c6c6548) != double word at 0x00101000 (0x6f57206f6c6c6548)
Total of 0 double word(s) were the same

Configuration

The cmp command is only available if CONFIG_CMD_MEMORY=y. The cmp.q command is only available on 64-bit targets.

Return value

The return value $? is true (0) if the compared memory areas are equal. The reutrn value is false (1) if the compared memory areas differ.