Discussion:
68000 and 680x instruction sets
(too old to reply)
Jonathan de Boyne Pollard
2010-03-22 13:52:02 UTC
Permalink
There also was an unconditional branch, BRA, [...]
... and because of the way that the opcodes were encoded, with a single
bit negating the sense of the branch test, there was a branch-never
instruction, BRN, too. The same great taste as a branch, but zero calories.
Nick Spalding
2010-03-22 15:25:49 UTC
Permalink
Jonathan de Boyne Pollard wrote, in
Post by Jonathan de Boyne Pollard
There also was an unconditional branch, BRA, [...]
... and because of the way that the opcodes were encoded, with a single
bit negating the sense of the branch test, there was a branch-never
instruction, BRN, too. The same great taste as a branch, but zero calories.
Like the 1410/7010 move instruction where what got moved, how much of
it, and in what direction depended on a 6-bit modifier which when all
three 'what' bits were zero moved nothing but left the address registers
as they would have been if something had moved.
--
Nick Spalding
jmfbahciv
2010-03-23 12:03:51 UTC
Permalink
Post by Jonathan de Boyne Pollard
There also was an unconditional branch, BRA, [...]
... and because of the way that the opcodes were encoded, with a single
bit negating the sense of the branch test, there was a branch-never
instruction, BRN, too. The same great taste as a branch, but zero calories.
People used NOOPs because they were NOOPs.

/BAH
Jonathan de Boyne Pollard
2010-03-23 17:45:53 UTC
Permalink
Post by jmfbahciv
Post by Jonathan de Boyne Pollard
There also was an unconditional branch, BRA, [...]
... and because of the way that the opcodes were encoded, with a
single bit negating the sense of the branch test, there was a
branch-never instruction, BRN, too. The same great taste as a
branch, but zero calories.
People used NOOPs because they were NOOPs.
Actually, people used branch never to generate longer delays than a
NOP. As I said, BRN has the same great taste as a branch. It expends
all of the cycles that any other type of branch would (in the
branch-not-taken case). A 1-byte NOP takes 2 cycles. A 2-byte BRN
takes 3 cycles. (And a 4-byte LBRN takes 5 cycles.)
Charles Richmond
2010-03-24 02:51:05 UTC
Permalink
Post by Jonathan de Boyne Pollard
Post by jmfbahciv
Post by Jonathan de Boyne Pollard
There also was an unconditional branch, BRA, [...]
... and because of the way that the opcodes were encoded, with a
single bit negating the sense of the branch test, there was a
branch-never instruction, BRN, too. The same great taste as a
branch, but zero calories.
People used NOOPs because they were NOOPs.
Actually, people used branch never to generate longer delays than a
NOP. As I said, BRN has the same great taste as a branch. It expends
all of the cycles that any other type of branch would (in the
branch-not-taken case). A 1-byte NOP takes 2 cycles. A 2-byte BRN
takes 3 cycles. (And a 4-byte LBRN takes 5 cycles.)
And for *really* long delays, use something like this:


LABEL JMP LABEL


;-)
--
+----------------------------------------+
| Charles and Francis Richmond |
| |
| plano dot net at aquaporin4 dot com |
+----------------------------------------+
jmfbahciv
2010-03-24 12:15:32 UTC
Permalink
Post by Jonathan de Boyne Pollard
Post by jmfbahciv
Post by Jonathan de Boyne Pollard
There also was an unconditional branch, BRA, [...]
... and because of the way that the opcodes were encoded, with a
single bit negating the sense of the branch test, there was a
branch-never instruction, BRN, too. The same great taste as a
branch, but zero calories.
People used NOOPs because they were NOOPs.
Actually, people used branch never to generate longer delays than a
NOP. As I said, BRN has the same great taste as a branch. It expends
all of the cycles that any other type of branch would (in the
branch-not-taken case). A 1-byte NOP takes 2 cycles. A 2-byte BRN
takes 3 cycles. (And a 4-byte LBRN takes 5 cycles.)
Which instruction used depended on the reason it was used; some
reasons needed core to be touched others not. I used a NOOP as
the instruction of an error return whenever I wanted to ignore
it.

/BAH

Loading...