Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
4f4e38ce
Commit
4f4e38ce
authored
Feb 03, 2010
by
Eric Pouech
Committed by
Alexandre Julliard
Feb 04, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winedbg: Implemented is_step_over method for x86-64 CPU.
parent
9ed8d56e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
55 additions
and
2 deletions
+55
-2
be_x86_64.c
programs/winedbg/be_x86_64.c
+55
-2
No files found.
programs/winedbg/be_x86_64.c
View file @
4f4e38ce
...
...
@@ -164,8 +164,61 @@ static const struct dbg_internal_var* be_x86_64_init_registers(CONTEXT* ctx)
static
unsigned
be_x86_64_is_step_over_insn
(
const
void
*
insn
)
{
dbg_printf
(
"not done step_over_insn
\n
"
);
return
FALSE
;
BYTE
ch
;
for
(;;)
{
if
(
!
dbg_read_memory
(
insn
,
&
ch
,
sizeof
(
ch
)))
return
FALSE
;
switch
(
ch
)
{
/* Skip all prefixes */
case
0x2e
:
/* cs: */
case
0x36
:
/* ss: */
case
0x3e
:
/* ds: */
case
0x26
:
/* es: */
case
0x64
:
/* fs: */
case
0x65
:
/* gs: */
case
0x66
:
/* opcode size prefix */
case
0x67
:
/* addr size prefix */
case
0xf0
:
/* lock */
case
0xf2
:
/* repne */
case
0xf3
:
/* repe */
insn
=
(
const
char
*
)
insn
+
1
;
continue
;
/* Handle call instructions */
case
0xcd
:
/* int <intno> */
case
0xe8
:
/* call <offset> */
case
0x9a
:
/* lcall <seg>:<off> */
return
TRUE
;
case
0xff
:
/* call <regmodrm> */
if
(
!
dbg_read_memory
((
const
char
*
)
insn
+
1
,
&
ch
,
sizeof
(
ch
)))
return
FALSE
;
return
(((
ch
&
0x38
)
==
0x10
)
||
((
ch
&
0x38
)
==
0x18
));
/* Handle string instructions */
case
0x6c
:
/* insb */
case
0x6d
:
/* insw */
case
0x6e
:
/* outsb */
case
0x6f
:
/* outsw */
case
0xa4
:
/* movsb */
case
0xa5
:
/* movsw */
case
0xa6
:
/* cmpsb */
case
0xa7
:
/* cmpsw */
case
0xaa
:
/* stosb */
case
0xab
:
/* stosw */
case
0xac
:
/* lodsb */
case
0xad
:
/* lodsw */
case
0xae
:
/* scasb */
case
0xaf
:
/* scasw */
return
TRUE
;
default:
return
FALSE
;
}
}
}
static
unsigned
be_x86_64_is_function_return
(
const
void
*
insn
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment