📄 crash66.c
字号:
// { dg-do assemble }// { dg-options "-O" }// GROUPS passed old-aborttypedef unsigned char uchar;typedef unsigned short ushort;typedef unsigned long ulong;extern int swap_endian; inline ushortswapshort(ushort value){ value &= 0xffff; return ((value << 8) | (value >> 8));}struct eshort{ ushort data; operator ushort() { return swap_endian ? swapshort(data) : data;} eshort(ushort t) { data = swap_endian ? swapshort(t) : t;} eshort() {}};inline ulongswaplong(ulong value){ ulong v = (value << 16) | (value >> 16); return ((v >> 8) & 0x00ff00ff) | ((v << 8) & 0xff00ff00);}struct elong{ ulong data; operator ulong() { return swap_endian ? swaplong(data) : data;} elong(ulong t) { data = swap_endian ? swaplong(t) : t; } elong() {}};struct digiheader{ uchar type[2]; eshort soft_version; eshort lo_boot_rev; eshort hi_boot_rev; eshort load_segment; eshort length; eshort exec_start; eshort image_offset; elong startup_code[2]; elong checksum; };extern void uncompress(uchar* buf, ulong len);extern ulong compress(char* filename, uchar* buffer, ulong);struct filehdr{ eshort f_magic; eshort f_nscns; elong f_timdat; elong f_symptr; elong f_nsyms; eshort f_opthdr; eshort f_flags; };struct aouthdr{ eshort magic; eshort vstamp; elong tsize; elong dsize; elong bsize; elong entry; elong text_start; elong data_start; elong bss_start; elong gprmask; elong cprmask[4]; elong gp_value; };struct scnhdr{ char s_name[8]; elong s_paddr; elong s_vaddr; elong s_size; elong s_scnptr; elong s_relptr; elong s_lnnoptr; eshort s_nreloc; eshort s_nlnno; elong s_flags; };int file_little_endian; int host_little_endian; int swap_endian; int docheck; int expand; ulong memsize; ulong compression_quality; char *compressfile; int debug_level; extern "C" int getopt (int, char**, char*);intmain(int argc, char** argv){ uchar checksum; uchar docrc; ulong len; ulong maxlen; int i; int c; int magic; int tsize; int dsize; int quality; char dummy; uchar* code; uchar* buf; char* ap; digiheader *dh; compression_quality = 10000; docheck = 0; while ((c = getopt(argc, argv, "Ccdf:k:q:x:")) != -1) { switch (c) { default: goto usage; } } if ((expand && (docheck || compressfile || quality)) || (quality && !compressfile)) { usage: return(2); } if (compressfile) { dh->image_offset = len; len += compress(compressfile, code + len, maxlen - len); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -