Size of an hex in x64 Assembly
up vote
0
down vote
favorite
I'm trying to try all the variants of the x
command in assembly. I typed
(gdb) x /x $rsp
0x7fffffffdf90: 0x01
According to my book the x/x command select the first 8 bytes from rsp and write them as an hex. However, looking for the assembly documentation (gdb help) i have not found anywhere that the size of /x is explicitly 8 byte. So how do I know if it is really 8 bytes ?
assembly gdb
add a comment |
up vote
0
down vote
favorite
I'm trying to try all the variants of the x
command in assembly. I typed
(gdb) x /x $rsp
0x7fffffffdf90: 0x01
According to my book the x/x command select the first 8 bytes from rsp and write them as an hex. However, looking for the assembly documentation (gdb help) i have not found anywhere that the size of /x is explicitly 8 byte. So how do I know if it is really 8 bytes ?
assembly gdb
Use a count larger than 1 to see what the grouping is, and what the gap is to the next address. Or dump something that definitely doesn't have zeros in the high bytes, because0x01
and0x00000001
might both print the same, but0xDEADBEEF
is unambiguously (at least) 4 bytes.
– Peter Cordes
Nov 13 at 7:19
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I'm trying to try all the variants of the x
command in assembly. I typed
(gdb) x /x $rsp
0x7fffffffdf90: 0x01
According to my book the x/x command select the first 8 bytes from rsp and write them as an hex. However, looking for the assembly documentation (gdb help) i have not found anywhere that the size of /x is explicitly 8 byte. So how do I know if it is really 8 bytes ?
assembly gdb
I'm trying to try all the variants of the x
command in assembly. I typed
(gdb) x /x $rsp
0x7fffffffdf90: 0x01
According to my book the x/x command select the first 8 bytes from rsp and write them as an hex. However, looking for the assembly documentation (gdb help) i have not found anywhere that the size of /x is explicitly 8 byte. So how do I know if it is really 8 bytes ?
assembly gdb
assembly gdb
asked Nov 13 at 7:10
Koinos
367
367
Use a count larger than 1 to see what the grouping is, and what the gap is to the next address. Or dump something that definitely doesn't have zeros in the high bytes, because0x01
and0x00000001
might both print the same, but0xDEADBEEF
is unambiguously (at least) 4 bytes.
– Peter Cordes
Nov 13 at 7:19
add a comment |
Use a count larger than 1 to see what the grouping is, and what the gap is to the next address. Or dump something that definitely doesn't have zeros in the high bytes, because0x01
and0x00000001
might both print the same, but0xDEADBEEF
is unambiguously (at least) 4 bytes.
– Peter Cordes
Nov 13 at 7:19
Use a count larger than 1 to see what the grouping is, and what the gap is to the next address. Or dump something that definitely doesn't have zeros in the high bytes, because
0x01
and 0x00000001
might both print the same, but 0xDEADBEEF
is unambiguously (at least) 4 bytes.– Peter Cordes
Nov 13 at 7:19
Use a count larger than 1 to see what the grouping is, and what the gap is to the next address. Or dump something that definitely doesn't have zeros in the high bytes, because
0x01
and 0x00000001
might both print the same, but 0xDEADBEEF
is unambiguously (at least) 4 bytes.– Peter Cordes
Nov 13 at 7:19
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
So how do I know if it is really 8 bytes ?
It's not. It's "whatever size you used last". Documentation.
For example:
(gdb) x/bx $rsp
0x7fffffffcbc8: 0x1c
Subsequent x/x
commands will use size 1 (a single char):
(gdb) x/x $rsp
0x7fffffffcbc8: 0x1c
You can override the size explicitly:
(gdb) x/gx $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
Subsequent x/x
commands now default to size 8:
(gdb) x/x $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
So how do I know if it is really 8 bytes ?
It's not. It's "whatever size you used last". Documentation.
For example:
(gdb) x/bx $rsp
0x7fffffffcbc8: 0x1c
Subsequent x/x
commands will use size 1 (a single char):
(gdb) x/x $rsp
0x7fffffffcbc8: 0x1c
You can override the size explicitly:
(gdb) x/gx $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
Subsequent x/x
commands now default to size 8:
(gdb) x/x $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
add a comment |
up vote
1
down vote
So how do I know if it is really 8 bytes ?
It's not. It's "whatever size you used last". Documentation.
For example:
(gdb) x/bx $rsp
0x7fffffffcbc8: 0x1c
Subsequent x/x
commands will use size 1 (a single char):
(gdb) x/x $rsp
0x7fffffffcbc8: 0x1c
You can override the size explicitly:
(gdb) x/gx $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
Subsequent x/x
commands now default to size 8:
(gdb) x/x $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
add a comment |
up vote
1
down vote
up vote
1
down vote
So how do I know if it is really 8 bytes ?
It's not. It's "whatever size you used last". Documentation.
For example:
(gdb) x/bx $rsp
0x7fffffffcbc8: 0x1c
Subsequent x/x
commands will use size 1 (a single char):
(gdb) x/x $rsp
0x7fffffffcbc8: 0x1c
You can override the size explicitly:
(gdb) x/gx $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
Subsequent x/x
commands now default to size 8:
(gdb) x/x $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
So how do I know if it is really 8 bytes ?
It's not. It's "whatever size you used last". Documentation.
For example:
(gdb) x/bx $rsp
0x7fffffffcbc8: 0x1c
Subsequent x/x
commands will use size 1 (a single char):
(gdb) x/x $rsp
0x7fffffffcbc8: 0x1c
You can override the size explicitly:
(gdb) x/gx $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
Subsequent x/x
commands now default to size 8:
(gdb) x/x $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c
answered Nov 13 at 16:05
Employed Russian
122k19163232
122k19163232
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53275641%2fsize-of-an-hex-in-x64-assembly%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Use a count larger than 1 to see what the grouping is, and what the gap is to the next address. Or dump something that definitely doesn't have zeros in the high bytes, because
0x01
and0x00000001
might both print the same, but0xDEADBEEF
is unambiguously (at least) 4 bytes.– Peter Cordes
Nov 13 at 7:19