opt29.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 56 行

C
56
字号
#include "fail.h"

#ifdef __I86__
#define _TFAR __far
#define _TSAVE __saveregs
void _trash_fs();
#pragma aux _trash_fs = "nop" modify [fs]
#else
#define _TFAR
#define _TSAVE
#define _trash_fs()
#endif

int a[] = { 1, 2, 3, 4, 5 };

unsigned f( int _TFAR *data1, int n, int _TFAR *data2 )
{
    if( data1 != a ) return(__LINE__);
    if( data2 != a ) return(__LINE__);
    if( data1[0] != 1 ) return(__LINE__);
    if( data2[1] != 2 ) return(__LINE__);
    if( data1[2] != 3 ) return(__LINE__);
    if( data2[3] != 4 ) return(__LINE__);
    if( data1[4] != 5 ) return(__LINE__);
    return 0;
}

unsigned doBuffer( int _TFAR *buffer )
{
    unsigned line;

    line = f( buffer, 1, buffer );
    if( line ) return(line);
    line = f( buffer, 1, buffer );
    if( line ) return(line);
    buffer[2] = 0;
    return 0;
}

unsigned _TSAVE db( int _TFAR *buffer ) {
    unsigned line;

    _trash_fs();
    line = doBuffer( buffer );
    _trash_fs();
    return line;
}

int main()
{
    unsigned line;
    line = db( a );
    if( line ) fail(line);
    _PASS;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?