亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? nasm.h

?? 32位匯編編譯器nasm源代碼
?? H
?? 第 1 頁 / 共 3 頁
字號(hào):
     */
    void (*init) (FILE * fp, efunc error, ldfunc ldef, evalfunc eval);

    /*
     * This procedure is called to pass generic information to the
     * object file.  The first parameter gives the information type
     * (currently only command line switches)
     * and the second parameter gives the value.  This function returns
     * 1 if recognized, 0 if unrecognized
     */
    int (*setinfo) (enum geninfo type, char **string);

    /*
     * This procedure is called by assemble() to write actual
     * generated code or data to the object file. Typically it
     * doesn't have to actually _write_ it, just store it for
     * later.
     *
     * The `type' argument specifies the type of output data, and
     * usually the size as well: its contents are described below.
     */
    void (*output) (long segto, const void *data, unsigned long type,
                    long segment, long wrt);

    /*
     * This procedure is called once for every symbol defined in
     * the module being assembled. It gives the name and value of
     * the symbol, in NASM's terms, and indicates whether it has
     * been declared to be global. Note that the parameter "name",
     * when passed, will point to a piece of static storage
     * allocated inside the label manager - it's safe to keep using
     * that pointer, because the label manager doesn't clean up
     * until after the output driver has.
     *
     * Values of `is_global' are: 0 means the symbol is local; 1
     * means the symbol is global; 2 means the symbol is common (in
     * which case `offset' holds the _size_ of the variable).
     * Anything else is available for the output driver to use
     * internally.
     *
     * This routine explicitly _is_ allowed to call the label
     * manager to define further symbols, if it wants to, even
     * though it's been called _from_ the label manager. That much
     * re-entrancy is guaranteed in the label manager. However, the
     * label manager will in turn call this routine, so it should
     * be prepared to be re-entrant itself.
     *
     * The `special' parameter contains special information passed
     * through from the command that defined the label: it may have
     * been an EXTERN, a COMMON or a GLOBAL. The distinction should
     * be obvious to the output format from the other parameters.
     */
    void (*symdef) (char *name, long segment, long offset, int is_global,
                    char *special);

    /*
     * This procedure is called when the source code requests a
     * segment change. It should return the corresponding segment
     * _number_ for the name, or NO_SEG if the name is not a valid
     * segment name.
     *
     * It may also be called with NULL, in which case it is to
     * return the _default_ section number for starting assembly in.
     *
     * It is allowed to modify the string it is given a pointer to.
     *
     * It is also allowed to specify a default instruction size for
     * the segment, by setting `*bits' to 16 or 32. Or, if it
     * doesn't wish to define a default, it can leave `bits' alone.
     */
    long (*section) (char *name, int pass, int *bits);

    /*
     * This procedure is called to modify the segment base values
     * returned from the SEG operator. It is given a segment base
     * value (i.e. a segment value with the low bit set), and is
     * required to produce in return a segment value which may be
     * different. It can map segment bases to absolute numbers by
     * means of returning SEG_ABS types.
     *
     * It should return NO_SEG if the segment base cannot be
     * determined; the evaluator (which calls this routine) is
     * responsible for throwing an error condition if that occurs
     * in pass two or in a critical expression.
     */
    long (*segbase) (long segment);

    /*
     * This procedure is called to allow the output driver to
     * process its own specific directives. When called, it has the
     * directive word in `directive' and the parameter string in
     * `value'. It is called in both assembly passes, and `pass'
     * will be either 1 or 2.
     *
     * This procedure should return zero if it does not _recognise_
     * the directive, so that the main program can report an error.
     * If it recognises the directive but then has its own errors,
     * it should report them itself and then return non-zero. It
     * should also return non-zero if it correctly processes the
     * directive.
     */
    int (*directive) (char *directive, char *value, int pass);

    /*
     * This procedure is called before anything else - even before
     * the "init" routine - and is passed the name of the input
     * file from which this output file is being generated. It
     * should return its preferred name for the output file in
     * `outname', if outname[0] is not '\0', and do nothing to
     * `outname' otherwise. Since it is called before the driver is
     * properly initialised, it has to be passed its error handler
     * separately.
     *
     * This procedure may also take its own copy of the input file
     * name for use in writing the output file: it is _guaranteed_
     * that it will be called before the "init" routine.
     *
     * The parameter `outname' points to an area of storage
     * guaranteed to be at least FILENAME_MAX in size.
     */
    void (*filename) (char *inname, char *outname, efunc error);

    /*
     * This procedure is called after assembly finishes, to allow
     * the output driver to clean itself up and free its memory.
     * Typically, it will also be the point at which the object
     * file actually gets _written_.
     *
     * One thing the cleanup routine should always do is to close
     * the output file pointer.
     */
    void (*cleanup) (int debuginfo);
};

/*
 * values for the `type' parameter to an output function. Each one
 * must have the actual number of _bytes_ added to it.
 *
 * Exceptions are OUT_RELxADR, which denote an x-byte relocation
 * which will be a relative jump. For this we need to know the
 * distance in bytes from the start of the relocated record until
 * the end of the containing instruction. _This_ is what is stored
 * in the size part of the parameter, in this case.
 *
 * Also OUT_RESERVE denotes reservation of N bytes of BSS space,
 * and the contents of the "data" parameter is irrelevant.
 *
 * The "data" parameter for the output function points to a "long",
 * containing the address in question, unless the type is
 * OUT_RAWDATA, in which case it points to an "unsigned char"
 * array.
 */
#define OUT_RAWDATA 0x00000000UL
#define OUT_ADDRESS 0x10000000UL
#define OUT_REL2ADR 0x20000000UL
#define OUT_REL4ADR 0x30000000UL
#define OUT_RESERVE 0x40000000UL
#define OUT_TYPMASK 0xF0000000UL
#define OUT_SIZMASK 0x0FFFFFFFUL

/*
 * ------------------------------------------------------------
 * The data structure defining a debug format driver, and the
 * interfaces to the functions therein.
 * ------------------------------------------------------------
 */

struct dfmt {

    /*
     * This is a short (one-liner) description of the type of
     * output generated by the driver.
     */
    const char *fullname;

    /*
     * This is a single keyword used to select the driver.
     */
    const char *shortname;

    /*
     * init - called initially to set up local pointer to object format, 
     * void pointer to implementation defined data, file pointer (which
     * probably won't be used, but who knows?), and error function.
     */
    void (*init) (struct ofmt * of, void *id, FILE * fp, efunc error);

    /*
     * linenum - called any time there is output with a change of
     * line number or file.
     */
    void (*linenum) (const char *filename, long linenumber, long segto);

    /*
     * debug_deflabel - called whenever a label is defined. Parameters
     * are the same as to 'symdef()' in the output format. This function
     * would be called before the output format version.
     */

    void (*debug_deflabel) (char *name, long segment, long offset,
                            int is_global, char *special);
    /*
     * debug_directive - called whenever a DEBUG directive other than 'LINE'
     * is encountered. 'directive' contains the first parameter to the
     * DEBUG directive, and params contains the rest. For example,
     * 'DEBUG VAR _somevar:int' would translate to a call to this
     * function with 'directive' equal to "VAR" and 'params' equal to 
     * "_somevar:int".
     */
    void (*debug_directive) (const char *directive, const char *params);

    /*
     * typevalue - called whenever the assembler wishes to register a type
     * for the last defined label.  This routine MUST detect if a type was
     * already registered and not re-register it.
     */
    void (*debug_typevalue) (long type);

    /*
     * debug_output - called whenever output is required
     * 'type' is the type of info required, and this is format-specific
     */
    void (*debug_output) (int type, void *param);

    /*
     * cleanup - called after processing of file is complete
     */
    void (*cleanup) (void);

};
/*
 * The type definition macros
 * for debugging
 *
 * low 3 bits: reserved
 * next 5 bits: type
 * next 24 bits: number of elements for arrays (0 for labels)
 */

#define TY_UNKNOWN 0x00
#define TY_LABEL   0x08
#define TY_BYTE    0x10
#define TY_WORD    0x18
#define TY_DWORD   0x20
#define TY_FLOAT   0x28
#define TY_QWORD   0x30
#define TY_TBYTE   0x38
#define TY_COMMON  0xE0
#define TY_SEG     0xE8
#define TY_EXTERN  0xF0
#define TY_EQU     0xF8

#define TYM_TYPE(x) ((x) & 0xF8)
#define TYM_ELEMENTS(x) (((x) & 0xFFFFFF00) >> 8)

#define TYS_ELEMENTS(x)  ((x) << 8)
/*
 * -----
 * Other
 * -----
 */

/*
 * This is a useful #define which I keep meaning to use more often:
 * the number of elements of a statically defined array.
 */

#define elements(x)     ( sizeof(x) / sizeof(*(x)) )

extern int tasm_compatible_mode;

/*
 * This declaration passes the "pass" number to all other modules
 * "pass0" assumes the values: 0, 0, ..., 0, 1, 2
 * where 0 = optimizing pass
 *       1 = pass 1
 *       2 = pass 2
 */

extern int pass0;               /* this is globally known */
extern int optimizing;

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人体做爰大胆视频| 国产色婷婷亚洲99精品小说| 狠狠久久亚洲欧美| 国产精品国产三级国产专播品爱网| 欧美肥妇bbw| 成人免费的视频| 久久精品国产精品青草| 夜夜嗨av一区二区三区中文字幕| 欧美精品一区二区久久久| 欧美性猛交一区二区三区精品| 风间由美一区二区三区在线观看| 日韩av电影免费观看高清完整版 | 成人黄色小视频| 人妖欧美一区二区| 亚洲国产视频在线| 亚洲视频一二三区| 欧美激情一区二区三区| 精品国产乱码久久久久久夜甘婷婷| 欧美四级电影在线观看| av不卡在线播放| 国产盗摄视频一区二区三区| 日韩av一级片| 日韩综合小视频| 亚洲国产精品视频| 亚洲摸摸操操av| 国产精品国产三级国产普通话99 | 亚洲一区二区三区视频在线| 中文在线一区二区| 国产欧美视频一区二区三区| 欧美成人精精品一区二区频| 日韩午夜在线观看视频| 5566中文字幕一区二区电影| 在线观看91精品国产入口| 99久久精品国产精品久久| 懂色av一区二区三区免费观看 | 国产精品美女久久久久aⅴ| 久久精品视频网| 久久久亚洲午夜电影| 26uuu另类欧美亚洲曰本| 精品不卡在线视频| 久久久一区二区| 欧美国产日韩亚洲一区| 中文字幕av一区二区三区免费看| 国产精品视频在线看| 国产精品毛片a∨一区二区三区| 国产精品福利一区| 亚洲三级视频在线观看| 一区二区三区精品| 首页国产丝袜综合| 久久精品免费观看| 国产夫妻精品视频| 99re这里只有精品视频首页| 91美女福利视频| 精品视频在线免费看| 在线观看91精品国产麻豆| 欧美一区二区在线看| 欧美岛国在线观看| 久久久噜噜噜久噜久久综合| 国产欧美日韩在线看| 中文字幕亚洲一区二区va在线| 一区二区三区日韩欧美精品| 丝袜诱惑制服诱惑色一区在线观看| 毛片av中文字幕一区二区| 久久精品72免费观看| 国产suv精品一区二区883| 99久久99久久免费精品蜜臀| 欧美中文字幕久久| 日韩三级.com| 日本一区二区成人| 亚洲最快最全在线视频| 免费高清在线一区| www.欧美精品一二区| 精品污污网站免费看| 久久欧美中文字幕| 一区二区三区在线视频观看58| 日本不卡1234视频| 高清国产一区二区| 欧美喷潮久久久xxxxx| 国产午夜一区二区三区| 亚洲国产欧美日韩另类综合 | 亚洲天天做日日做天天谢日日欢 | 国产精品久久久久久久久快鸭| 亚洲午夜在线电影| 国产精品自拍av| 欧美亚洲高清一区| 国产视频一区在线播放| 亚洲h动漫在线| 粗大黑人巨茎大战欧美成人| 欧美老人xxxx18| 中文av一区二区| 蜜臀久久久99精品久久久久久| 99精品一区二区三区| 精品久久久久一区| 亚洲高清久久久| 成+人+亚洲+综合天堂| 日韩美女主播在线视频一区二区三区| 亚洲免费资源在线播放| 国产黄色成人av| 日韩一级片在线观看| 亚洲免费视频成人| 成人午夜激情视频| 欧美v日韩v国产v| 亚洲成人av免费| 99久久婷婷国产| 国产日韩在线不卡| 久久成人久久爱| 欧美高清视频一二三区| 一区二区在线看| 91一区一区三区| 国产色综合一区| 韩日av一区二区| 欧美一二区视频| 午夜一区二区三区视频| 色偷偷一区二区三区| 中文字幕av一区二区三区高| 精品一区二区在线免费观看| 91精品国产综合久久国产大片| 亚洲精品中文在线影院| av一区二区不卡| 国产精品久久久久四虎| 成人一级视频在线观看| 久久久精品国产免费观看同学| 麻豆精品在线播放| 3atv一区二区三区| 丝袜诱惑制服诱惑色一区在线观看 | 视频一区欧美日韩| 在线视频中文字幕一区二区| 亚洲视频在线一区| 91视视频在线观看入口直接观看www| 国产精品无人区| www.一区二区| 国产精品国产三级国产普通话三级 | 成人免费在线播放视频| 国产白丝精品91爽爽久久| 国产欧美精品在线观看| 国产精品一区二区x88av| 精品88久久久久88久久久| 韩国一区二区视频| 欧美变态tickle挠乳网站| 久久99国产精品久久| 日韩精品中文字幕一区| 久久国产成人午夜av影院| 日韩精品一区二区在线观看| 欧美96一区二区免费视频| 精品电影一区二区三区| 国产不卡高清在线观看视频| 国产精品第一页第二页第三页| 色婷婷综合久久久中文字幕| 亚洲自拍偷拍网站| 3d动漫精品啪啪一区二区竹菊| 麻豆精品一区二区三区| 国产三级精品三级在线专区| k8久久久一区二区三区| 亚洲激情图片小说视频| 7777精品伊人久久久大香线蕉完整版| 奇米色777欧美一区二区| 精品播放一区二区| 91女厕偷拍女厕偷拍高清| 亚洲国产精品久久久男人的天堂| 在线播放一区二区三区| 久久精品99国产国产精| 国产精品国产自产拍高清av| 欧美系列一区二区| 久久精品久久综合| 中文字幕高清不卡| 欧美猛男男办公室激情| 精品一区二区三区免费| 中文字幕一区三区| 51午夜精品国产| 成人激情免费视频| 天天色综合天天| 中文字幕电影一区| 欧美精品视频www在线观看| 国产成人综合网| 亚洲va天堂va国产va久| 国产视频在线观看一区二区三区| 欧美在线视频不卡| 国产一区二区三区四区五区美女| 亚洲黄网站在线观看| 欧美一级视频精品观看| 不卡的av在线播放| 美女视频黄免费的久久| 亚洲欧美日韩系列| 精品国产露脸精彩对白| 日本精品裸体写真集在线观看 | 天天色天天操综合| 国产精品狼人久久影院观看方式| 欧美日韩精品欧美日韩精品| 国产乱人伦精品一区二区在线观看 | www.性欧美| 另类小说图片综合网| 亚洲在线中文字幕| 国产视频一区二区三区在线观看| 欧美群妇大交群中文字幕| 99精品偷自拍| 国v精品久久久网| 麻豆极品一区二区三区| 亚洲综合偷拍欧美一区色| 国产偷国产偷亚洲高清人白洁| 欧美顶级少妇做爰|