Skip to content

func.get_low_level_il_at() fails for ARMv7 Thumb IT EQ instructions #1724

Answered by rssor
MartijnB asked this question in General
Discussion options

You must be logged in to vote

I see why it would be surprising, but there were a few reasons that doing it this way wound up making things cleaner in more situations. By deferring insertion of the IF/GOTOs as far as possible we wind up being able to cut out edges in a few extra cases (it comes into play more often when both a condition and its inverse are used in a single block, or when condition flag modifying instructions are themselves used in the block).

Since the outgoing 'edge' doesn't really belong to either the first instruction in the block or the it instruction itself, I wound up just always putting it in the higher address, and that way the behavior is consistent even when something in the it block modifies…

Replies: 6 comments

Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Answer selected by plafosse
Comment options

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
3 participants
Converted from issue

This discussion was converted from issue #1724 on June 03, 2020 18:08.