I am sorry about that. I have pasted the code i am trying out but i know it has a major flaw in it. Especially when i decalre $length_buffer, what i really want to say is that my $length_buffer is 32bytes wide i.e it can hold 256 bits. Anytime i read out an instrution address such as
0x405d75 0x4035f7 0x4035f8 0x4035fb
i compute its length and diplay it in bytes so i could use it for comparing the length of the address and the buffer in bytes. the source from where i picked up using the pragma Use bytes is below. (http://perlmeme.org/howtos/using_perl/length.html)
#!user/bin/perl #use strict; #use warnings; use bytes; $length_buffer= length(0x100) ; + #buffer length print "$length_buffer, \n"; $base=length(0x00); + #base address print "$base, \n"; $base_end= ($base+ $length_buffer-1); + #base_end address, here it means it goes from 0 to 255 which is 25 +6 elements in the buffer print " The end of the buffer=$base_end, \n"; + #just to check if the buffer end prints correctly, in this case it +s 255 #$temp= 0xFFFFFFE0; $count_hit=0; + #counter to calculate the number of hits $count_miss=0; + #counter to calculate number of misses ################## Input and output Files############################# +####################################################### open(FILE1," < output_log.txt") or die "can't read the file"; + #trace file input open(FILE2, "> o_hit_miss.txt") or die "can't write into the file"; + #output file containing the hit and miss informaiton ###################################################################### +######################################################### while(<FILE1>){ $inst_addr= $_; # + read the lines and store in in inst_addr #print " $inst_addr \n"; +# to check if the inst_addr is being read out correctly from the give +n file ###########################################calcultes the length of the + address and prints the same in bytes#################### if($inst_addr) { #use bytes; # Pr +agma to display the string in bytes and not in characters #$len_ofinstr=length( $inst_addr); +#calculates the length of string in bytes and assigns it to $len_inst +r #print " Length in bytes: ", $len_ofinstr, "\n"; +#prints the length in bytes for my understanding if($len_ofinstr >= $base && $len_ofinstr <=$base_end) { #print" $hit, \n"; #print FILE2 $hit. "\n"; #print " The inst fits in the buffer->hit, \n"; $len_ofinstr+=$len_ofinstr; #print "Total number of bytes in the buffer=", $len_ofinstr, " +\n"; $count_hit=$count_hit+1; #print " Number of hits in the buffer= $count_hit", "\n"; print FILE2 "number of hits in buffer". $count_hit. "\n"; } } else{ if($len_inst == $length_buffer) { print " it can not hold anymore, \n"; $base= $instr_addr & 0xffffffe0; } } }
In reply to Re^4: How to assign a variable its width/vector
by samd
in thread How to assign a variable its width/vector
by samd
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |