1

ARM7 TDMI プロセッサで実行されているいくつかの例外処理コードをテストしようとしています。「未定義命令」例外を生成する命令オペコードを手動で作成したいと考えています。これまでのところ、私はこれを行ってきました:

void createUndefinedException()
{    
    static const int instr = 0x26889912; // bad opcode
    ((void(*)(void))instr)();
}

上記のオペコードにたどり着いたのは、今日 Web で見つけた参照ページの一番下にある未定義の命令オペコードについて述べているためです。

上記のコードは、未定義命令例外ではなく、プリフェッチ アボート例外を生成します。

これを簡単に作成する方法を知っている人はいますか?

この例外の処理が正しく機能することを確認したいだけです。

4

2 に答える 2

1

asm ファイルを作成する

.globl test_function
test_function:
.word 0x26889912
bx lr

組み立てる

arm-none-linux-gnueabi-as fun.s -o fun.o

Cコードから呼び出す

extern void test_function ( void );

...

test_function();

次に、リンクしているオブジェクトのリストに追加します

arm-none-linux-gnueabi-gcc myprogram.c fun.o -o myprogram

そしてそれを実行します。

于 2012-08-07T18:51:27.383 に答える
0

int のアドレスから関数を作成する必要があります。

typedef void (*Exception)(void)
static unsigned long illegalOpcode=0x26889912;
Exception e=(Exception)&illegalOpcode;
e();
于 2014-09-05T20:14:58.333 に答える