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

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

?? source.c

?? AVR反匯編,對ATMEGA8有效
?? C
?? 第 1 頁 / 共 2 頁
字號:
							break;

						default:

							sprintf(
								temp_string,
								"TSourceOut:\n"
								"\t%s instruction has unknown arg0_format: '%c'\n"
								"\targ0 is 0x%X",
								Instruction.name,
								Instruction.arg0_format,
								Instruction.arg0 );

							throw TGenericError( temp_string ); 

							break;

					} // end "switch( Instruction.arg0_format )"

				} // end else part of "if( Arg_longCall == Instruction.arg0_type )"

				if( TAvr::ARG_longCall == Instruction.arg1_type ){

					// These arg types are special because they also use the
					// next word as part of the opcode.

					// A really paranoid programmer would do a bounds check
					// on addr here.
					addr += 2;
					temp_short = pFlash->get_flash_word(
						addr,
						&high_byte_written,
						&low_byte_written );


					if( !high_byte_written || !low_byte_written ){
						sprintf(
							temp_string,
							"TSourceOut: Word Address: %04X: Needed Entire Word Written",
							addr );
						throw TGenericError( temp_string ); 
					}

					temp_long =
						( (unsigned long)Instruction.arg1 << 16 ) |
						( (unsigned long)temp_short );

					strcpy( temp_string2, temp_string );

					sprintf(
						temp_string,
						"%s, 0x%04lX",
						temp_string2,
						temp_long );

				} else if( TAvr::ARG_neg64_63 == Instruction.arg1_type ) {

					// We insist that an ARG_neg64_63 arg type have
					// an arg format of 'k'.
					if( 'k' != Instruction.arg1_format ){

						sprintf(
							temp_string,
							"TSourceOut:\n"
							"\t%s instruciton has arg1_type = ARG_neg64_63\n"
							"\twith 'k' != ( arg1_format = '%c' )",
							Instruction.name,
							Instruction.arg1_format );
				
						throw TGenericError( temp_string ); 
					}

					strcpy( temp_string2, temp_string );

					sprintf(
						temp_string,
						"%s, %d",
						temp_string2,
						(short)Instruction.arg1 );

					have_dest = TRUE;
					//dest = addr + 2 + (short)Instruction.arg1;
					//there is a special case;
					if(Instruction.arg1<0 && Instruction.arg1<-4*1024){
						unsigned int offset = 0;
						offset = addr + 2 + Instruction.arg1;
						offset = offset &0x00000FFF;
						dest = offset;
					}else{
						dest = addr + 2 + (short)Instruction.arg1;
					}

				} else if (TAvr::ARG_0_PAIR==Instruction.arg1_type){
					strcpy( temp_string2, temp_string );
					sprintf(
								temp_string,
								"%s, r%d:r%d",
								temp_string2,
								Instruction.arg1*2+1,Instruction.arg1*2);
				}else{

					switch( Instruction.arg1_format ){

						case '\0':
							// No arg1 to this instruction.  No more to do.
							break;

						case 'b':
						case 'k':

							strcpy( temp_string2, temp_string );

							sprintf(
								temp_string,
								"%s, %d",
								temp_string2,
								(short)Instruction.arg1 );

							break;

						case 'd':
						case 'r':

							strcpy( temp_string2, temp_string );

							/*sprintf(
								temp_string,
								"%s, r%d",
								temp_string2,
								Instruction.arg1 );*/

							//change register name
							char r_name[4];
							sprintf(r_name,"r%d",Instruction.arg1);
							switch(Instruction.arg1){
								case 26:
									strcpy(r_name,"XL");
									break;
								case 27:
									strcpy(r_name,"XH");
									break;
								case 28:
									strcpy(r_name,"YL");
									break;
								case 29:
									strcpy(r_name,"YH");
									break;
								case 30:
									strcpy(r_name,"ZL");
									break;
								case 31:
									strcpy(r_name,"ZH");
									break;

							}
							sprintf(
								temp_string,
								"%s, %s",
								temp_string2,
								r_name );

							break;

						case 'K':
							strcpy( temp_string2, temp_string );

							sprintf(
								temp_string,
								"%s, 0x%X",
								temp_string2,
								Instruction.arg1 );

							break;
						case 'P':

							strcpy( temp_string2, temp_string );

							sprintf(
								temp_string,
								"%s, %s",
								temp_string2,
								m8_IO_register_name[Instruction.arg1] );

							break;

						case 'X':
						case 'Y':
						case 'Z':

							strcpy( temp_string2, temp_string );

							if( 0 == strcmp( "ldd", Instruction.name )){
								sprintf(
									temp_string,
									"%s, %c+%d",
									temp_string2,
									Instruction.arg1_format,
									Instruction.arg1 );

							} else {

								// It's a little convoluted how we get the
								// information back from TAvr::AdjustArg about
								// whether to us "X", "X+", or "-X".  In this
								// arg_format is 'X'.  We differentiate by setting
								// the value of arg (which is an (unsigned short))
								// to one of ' ', '+', or '-'.
								switch( (char)Instruction.arg1 ){

									case ' ':

										sprintf(
											temp_string,
											"%s, %c",
											temp_string2,
											Instruction.arg1_format );

										break;

									case '+':

										sprintf(
											temp_string,
											"%s, %c+",
											temp_string2,
											Instruction.arg1_format );

										break;

									case '-':

										sprintf(
											temp_string,
											"%s, -%c",
											temp_string2,
											Instruction.arg1_format );

										break;

									default:

										sprintf(
											temp_string,
											"TSourceOut:\n"
											"\t%s instruction has special arg1_format: '%c'\n"
											"\twith unknown arg1 of: 0x%X",
											Instruction.name,
											Instruction.arg1_format,
											Instruction.arg1 );
				
										throw TGenericError( temp_string ); 

										break;
								}
							}

							break;

						default:

							sprintf(
								temp_string,
								"TSourceOut:\n"
								"\t%s instruction has unknown arg1_format: '%c'\n"
								"\targ1 is 0x%X",
								Instruction.name,
								Instruction.arg1_format,
								Instruction.arg1 );

							throw TGenericError( temp_string ); 

							break;
					} // end "switch( Instruction.arg1_format )"

				} // end else part of "if( Arg_longCall == Instruction.arg1_type )"

				// We'll make it line up pretty assuming 8 space tabs.  I'm
				// taking a chance here and making the code as a whole a little
				// longer to try to decouple this process from the rest of this
				// function.
				//pLastTab = rindex( temp_string, '\t' );
				pLastTab = strrchr( temp_string, '\t' );

				//if( index( temp_string, '\t' ) == pLastTab ){
				if( strrchr( temp_string, '\t' ) == pLastTab ){

					// There is only one tab.  Therefore this is a simple
					// instruction with no arguments.  Since none of these are
					// 8 or more characters long, we know we haven't advanced
					// the hypothetical cursor to the args column yet.
					// Therefore we know that we need 3 tabs.
					tabs = "\t\t\t";

				} else if( 8 > strlen ( pLastTab + 1 ) ){

					// This is a short set of arguments.  We need 2 tabs to get
					// into the comments column.
					tabs = "\t\t";

				} else {

					// This is a long set of arguments.  We need 1 tab to get
					// into the comments column.
					tabs = "\t";
				}

				// Add the address and possibly the destination.
				// add the op_code
				if( have_dest ){

					sprintf(
						temp_string2,
						"%s%s; %04X:[%4X], Dest: %04X",
						temp_string,
						tabs,
						op_code_addr,
						code_word,
						dest );

				} else {

					sprintf(
						temp_string2,
						"%s%s; %04X:[%04X]",
						temp_string,
						tabs,
						op_code_addr,
						code_word);
				}

				pSourceString_tail =
					new TSourceString( temp_string2, pSourceString_tail );

				if ( NULL == pSourceString_head ){
					pSourceString_head = pSourceString_tail;
				}

			} // end while( 0 != ( Index = Avr.Word2Instruction

			line_count = 0;
			if( pSourceString_head ){

				// We were able to match the opcode to an instruction.

				if( pSourceString_head->next && !last_line_was_blank ){
					// There is more than one equavalent source strings that
					// can make this opcode.  Put in a blank line to seperate
					// these equivalent source strings from the other source.
					push_body( "" );
				}

				while( pSourceString_head ){

					if ( 0 == line_count ){
						strcpy( temp_string, pSourceString_head->string );
					} else {
						sprintf(
							temp_string,
							"\t;%s",
							pSourceString_head->string + 1 );
					}

					push_body( temp_string );
					pSourceString_temp = pSourceString_head->next;
					delete pSourceString_head;
					pSourceString_head = pSourceString_temp;

					line_count++;
				}

				if ( 1 < line_count ){

					// There was more than one line in this block.
					// Put out a blank line.
					last_line_was_blank = TRUE;
					push_body( "" );

				} else {

					last_line_was_blank = FALSE;
				}

			} else {

				// No instruction matched this opcode.  Print it as data.

				sprintf(
					temp_string,
					"\t.dw\t0x%04X\t\t; %04X:[%04X]",
					code_word,
					op_code_addr,
					code_word);

				push_body( temp_string );
				last_line_was_blank = FALSE;
			}

		} else {

			look_for_new_segment = TRUE;

		}
	}

	while( prolog_head ){
		fputs( prolog_head->string, pOutFile );
		fputc( '\n', pOutFile );
		pSourceString_temp = prolog_head->next;
		delete prolog_head;
		prolog_head = pSourceString_temp;
	}

	while( body_head ){
		fputs( body_head->string, pOutFile );
		fputc( '\n', pOutFile );
		pSourceString_temp = body_head->next;
		delete body_head;
		body_head = pSourceString_temp;
	}

	fclose(pOutFile); //!
}

void TSourceOut::push_prolog( const char* s){

	prolog_tail = new TSourceString( s, prolog_tail );

	if( NULL == prolog_head ){
		prolog_head = prolog_tail;
	}
}

void TSourceOut::push_body( const char* s){

	body_tail = new TSourceString( s, body_tail );

	if( NULL == body_head ){
		body_head = body_tail;
	}
}

TSourceOut::TSourceString::TSourceString(
	const char* s,
	TSourceString* previous ){

	strncpy( string, s, 79 );	// FIXME - magic number
	string[ 79 ] = '\0';

	if( NULL != previous )
		previous->next = this;

	next = NULL;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品超碰97尤物18| 久久国内精品自在自线400部| 狠狠色丁香婷婷综合| 国产精品日韩精品欧美在线| 91官网在线免费观看| 另类小说综合欧美亚洲| 日韩和欧美的一区| 亚洲欧美日韩中文播放| 日韩一级片网站| 欧美午夜不卡在线观看免费| 免费观看在线综合色| 亚洲国产精品一区二区尤物区| 国产欧美日韩综合精品一区二区| 欧美视频一区在线观看| 成人动漫中文字幕| 奇米精品一区二区三区四区 | 久久精品一级爱片| 欧美日韩在线三区| 91免费观看国产| 极品销魂美女一区二区三区| 亚洲成人高清在线| 亚洲电影第三页| 日日摸夜夜添夜夜添精品视频| 日韩美女视频一区二区| 国产精品国产三级国产有无不卡| 日韩女优视频免费观看| 日韩你懂的在线观看| 日韩一级片在线观看| 欧美日韩国产高清一区| 精品视频全国免费看| 欧美日韩色综合| 日韩精品一区二区三区三区免费| 在线免费观看一区| 欧美亚洲国产怡红院影院| 在线观看网站黄不卡| 欧美日韩亚洲综合一区二区三区| 欧美日韩精品二区第二页| 欧美一区欧美二区| 久久久久久久久久久黄色| 国产精品女同互慰在线看| 亚洲欧洲精品一区二区三区不卡| 中文字幕一区免费在线观看 | 国产精品女主播av| 欧美日韩免费一区二区三区视频 | 麻豆精品在线看| 久久99这里只有精品| 久久99精品一区二区三区三区| 麻豆成人久久精品二区三区红| 日本va欧美va欧美va精品| 日本成人在线不卡视频| 国产剧情在线观看一区二区| 美腿丝袜一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 7777精品伊人久久久大香线蕉经典版下载 | 日韩欧美激情在线| 亚洲男帅同性gay1069| 国产一区在线不卡| 欧美综合久久久| 亚洲欧美一区二区三区极速播放| 美女久久久精品| 97精品视频在线观看自产线路二| av电影一区二区| 2020国产精品自拍| 国产高清久久久久| 国产精品久久久久7777按摩| 一本大道av一区二区在线播放 | 欧美男生操女生| 视频在线观看国产精品| 日韩一区和二区| 精品午夜一区二区三区在线观看| 精品日本一线二线三线不卡| 久久精品免费看| 国产欧美日韩视频一区二区| 国产在线精品一区二区三区不卡| 久久网站热最新地址| 成人黄色小视频| 亚洲国产视频a| 精品精品国产高清a毛片牛牛| 国产精品99精品久久免费| 国产精品毛片无遮挡高清| 欧美亚洲国产bt| 97se亚洲国产综合自在线| 亚洲一区在线观看网站| 欧美一区二区不卡视频| 成人一区二区三区在线观看| 亚洲免费av在线| 国产人久久人人人人爽| 欧美丝袜自拍制服另类| 懂色av一区二区三区免费看| 亚洲va欧美va国产va天堂影院| 日韩一区二区三区四区| 94-欧美-setu| 国产精品一区二区男女羞羞无遮挡| 中文字幕亚洲在| 久久一区二区视频| 91精品蜜臀在线一区尤物| 成人av免费在线观看| 九九视频精品免费| 日韩av不卡一区二区| 五月婷婷综合激情| 亚洲一区二区三区自拍| 国产精品成人网| 中文字幕欧美日韩一区| 久久看人人爽人人| 久久久一区二区| 欧美成人性福生活免费看| 欧美人xxxx| 制服丝袜亚洲色图| 精品国产髙清在线看国产毛片| 欧美疯狂性受xxxxx喷水图片| 欧美性做爰猛烈叫床潮| 日本高清不卡视频| 884aa四虎影成人精品一区| 欧美一三区三区四区免费在线看| 欧美日韩精品免费观看视频| 欧美一区二区三区免费| 日韩欧美中文一区二区| 国产日韩欧美在线一区| 国产精品高清亚洲| 午夜国产不卡在线观看视频| 日韩激情视频网站| 成人免费va视频| 欧美三级资源在线| 久久久久亚洲蜜桃| 亚洲电影欧美电影有声小说| 九一久久久久久| 欧美色窝79yyyycom| 精品国产凹凸成av人网站| 亚洲欧洲成人自拍| 日韩专区欧美专区| 日本国产一区二区| 国产亚洲欧美一区在线观看| 一区二区久久久久| 国产麻豆一精品一av一免费| 欧美探花视频资源| 中文字幕在线观看不卡| 美女精品一区二区| 欧美日韩视频专区在线播放| 国产香蕉久久精品综合网| 精品久久免费看| 91精品国产入口在线| 欧美三级日本三级少妇99| 欧美日韩三级在线| 男女性色大片免费观看一区二区| 欧美sm美女调教| 色系网站成人免费| 一区二区视频在线看| 国产激情91久久精品导航| 久久久精品欧美丰满| 成人性视频网站| 国产精品电影院| 91精品1区2区| 日韩国产成人精品| 亚洲精品一区二区在线观看| 国产麻豆一精品一av一免费| 久久久久久久综合| 91亚洲男人天堂| 丝袜美腿亚洲色图| 久久亚洲综合av| 99久久精品一区| 亚洲男人的天堂在线aⅴ视频| 欧美午夜片在线看| 国产伦精一区二区三区| 亚洲日本一区二区| 日韩三级在线观看| 色呦呦国产精品| 欧美aⅴ一区二区三区视频| 久久综合成人精品亚洲另类欧美 | 欧美a一区二区| 日韩毛片精品高清免费| 911精品国产一区二区在线| 成人免费视频网站在线观看| 奇米色一区二区| 丝袜美腿成人在线| 日日欢夜夜爽一区| 91精品国产91久久久久久一区二区 | 国产一区二区三区在线观看免费| 欧美精品一区二区三区很污很色的| 狠狠色综合播放一区二区| 一区二区欧美在线观看| 国产三级一区二区| 欧美裸体bbwbbwbbw| 成人性视频网站| 国产精一区二区三区| 亚洲电影一区二区三区| 国产精品日产欧美久久久久| 欧美日本在线视频| 在线免费一区三区| 99久久婷婷国产综合精品电影| 国内外成人在线视频| 捆绑调教美女网站视频一区| 亚洲精品乱码久久久久久久久| 国产亚洲一区字幕| wwwwxxxxx欧美| 精品久久五月天| 欧美国产精品一区二区三区| 国产偷国产偷精品高清尤物| 精品成人在线观看| 亚洲国产精品99久久久久久久久| 久久久另类综合|