mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-11 18:06:21 +00:00
70 lines
1.1 KiB
C
70 lines
1.1 KiB
C
|
|
/* A test of the alternative (redundant) encodings for {inc,dec}{w,l}. */
|
|
|
|
#include "tests/asm.h"
|
|
#include <stdio.h>
|
|
|
|
int r1,r2,r3,r4,r5,r6,r7,r8,a1,a2;
|
|
|
|
extern void foo ( void );
|
|
asm("\n"
|
|
VG_SYM(foo) ":\n"
|
|
"\tpushl $0\n"
|
|
"\tpopfl\n"
|
|
"\tmovl " VG_SYM(a1) ",%eax\n"
|
|
"\tmovl " VG_SYM(a2) ",%edx\n"
|
|
|
|
/* inc %eax */
|
|
"\t.byte 0xFF\n"
|
|
"\t.byte 0xC0\n"
|
|
|
|
"\tmovl %eax," VG_SYM(r1) "\n"
|
|
"\tpushfl\n"
|
|
"\tpopl " VG_SYM(r2) "\n"
|
|
|
|
/* inc %dx */
|
|
"\t.byte 0x66\n"
|
|
"\t.byte 0xFF\n"
|
|
"\t.byte 0xC2\n"
|
|
|
|
"\tmovl %edx," VG_SYM(r3) "\n"
|
|
"\tpushfl\n"
|
|
"\tpopl " VG_SYM(r4) "\n"
|
|
|
|
/* dec %edx */
|
|
"\t.byte 0xFF\n"
|
|
"\t.byte 0xCA\n"
|
|
|
|
"\tmovl %edx," VG_SYM(r5) "\n"
|
|
"\tpushfl\n"
|
|
"\tpopl " VG_SYM(r6) "\n"
|
|
|
|
/* dec %ax */
|
|
"\t.byte 0x66\n"
|
|
"\t.byte 0xFF\n"
|
|
"\t.byte 0xC8\n"
|
|
|
|
"\tmovl %eax," VG_SYM(r7) "\n"
|
|
"\tpushfl\n"
|
|
"\tpopl " VG_SYM(r8) "\n"
|
|
|
|
"\tret\n"
|
|
);
|
|
|
|
int main ( void )
|
|
{
|
|
a1 = 0x77777777;
|
|
a2 = 0x88888888;
|
|
r1=r2=r3=r4=r5=r6=r7=r8=0;
|
|
foo();
|
|
printf("0x%08x\n",r1);
|
|
printf("0x%08x\n",r2);
|
|
printf("0x%08x\n",r3);
|
|
printf("0x%08x\n",r4);
|
|
printf("0x%08x\n",r5);
|
|
printf("0x%08x\n",r6);
|
|
printf("0x%08x\n",r7);
|
|
printf("0x%08x\n",r8);
|
|
return 0;
|
|
}
|