diff options
Diffstat (limited to 'html/subx/053new_segment.subx.html')
-rw-r--r-- | html/subx/053new_segment.subx.html | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/html/subx/053new_segment.subx.html b/html/subx/053new_segment.subx.html index 49724d37..af0bd778 100644 --- a/html/subx/053new_segment.subx.html +++ b/html/subx/053new_segment.subx.html @@ -62,11 +62,11 @@ if ('onhashchange' in window) { <span id="L7" class="LineNr"> 7 </span><span class="Comment"># 1-3 bytes 3 bits 2 bits 3 bits 3 bits 3 bits 2 bits 2 bits 0/1/2/4 bytes 0/1/2/4 bytes</span> <span id="L8" class="LineNr"> 8 </span> <span id="L9" class="LineNr"> 9 </span><span class="Comment"># main: (manual test if this is the last file loaded)</span> -<span id="L10" class="LineNr">10 </span> <span class="Comment"># EAX = new_segment(0x1000)</span> +<span id="L10" class="LineNr">10 </span> <span class="Comment"># EAX = new-segment(0x1000)</span> <span id="L11" class="LineNr">11 </span> <span class="Comment"># push arg</span> <span id="L12" class="LineNr">12 </span> 68/push 0x1000/imm32 <span id="L13" class="LineNr">13 </span> <span class="Comment"># call</span> -<span id="L14" class="LineNr">14 </span> e8/call new_segment/disp32 +<span id="L14" class="LineNr">14 </span> e8/call new-segment/disp32 <span id="L15" class="LineNr">15 </span> <span class="Comment"># discard arg</span> <span id="L16" class="LineNr">16 </span> 81 0/subop/add 3/mod/direct 4/rm32/ESP <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> 4/imm32 <span class="Comment"># add to ESP</span> <span id="L17" class="LineNr">17 </span> @@ -75,22 +75,22 @@ if ('onhashchange' in window) { <span id="L20" class="LineNr">20 </span> <span id="L21" class="LineNr">21 </span> <span class="Comment"># exit(EAX)</span> <span id="L22" class="LineNr">22 </span> 89/copy 3/mod/direct 3/rm32/EBX <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> 0/r32/EAX <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Comment"># copy EAX to EBX</span> -<span id="L23" class="LineNr">23 </span> b8/copy <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> 1/imm32/exit <span class="Comment"># copy to EAX</span> +<span id="L23" class="LineNr">23 </span> b8/copy-to-EAX 1/imm32/exit <span id="L24" class="LineNr">24 </span> cd/syscall 0x80/imm8 <span id="L25" class="LineNr">25 </span> -<span id="L26" class="LineNr">26 </span>new_segment: <span class="Comment"># len : int -> address</span> +<span id="L26" class="LineNr">26 </span>new-segment: <span class="Comment"># len : int -> address</span> <span id="L27" class="LineNr">27 </span> <span class="Comment"># prolog</span> <span id="L28" class="LineNr">28 </span> 55/push-EBP <span id="L29" class="LineNr">29 </span> 89/copy 3/mod/direct 5/rm32/EBP <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> 4/r32/ESP <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Comment"># copy ESP to EBP</span> <span id="L30" class="LineNr">30 </span> 53/push-EBX -<span id="L31" class="LineNr">31 </span> <span class="Comment"># copy len to mmap_new_segment.len</span> -<span id="L32" class="LineNr">32 </span> <span class="Comment"># TODO: compute mmap_new_segment+4 before runtime</span> -<span id="L33" class="LineNr">33 </span> 8b/copy 1/mod/*+disp8 4/rm32/SIB 5/base/EBP 4/index/none <span class="Delimiter"> . </span> 0/r32/EAX 8/disp8 <span class="Delimiter"> . </span> <span class="Comment"># copy *(EBP+8) to EAX</span> -<span id="L34" class="LineNr">34 </span> bb/copy <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> mmap_new_segment/imm32 <span class="Comment"># copy to EBX</span> +<span id="L31" class="LineNr">31 </span> <span class="Comment"># copy len to mmap-new-segment.len</span> +<span id="L32" class="LineNr">32 </span> <span class="Comment"># TODO: compute mmap-new-segment+4 before runtime</span> +<span id="L33" class="LineNr">33 </span> 8b/copy 1/mod/*+disp8 4/rm32/sib 5/base/EBP 4/index/none <span class="Delimiter"> . </span> 0/r32/EAX 8/disp8 <span class="Delimiter"> . </span> <span class="Comment"># copy *(EBP+8) to EAX</span> +<span id="L34" class="LineNr">34 </span> bb/copy-to-EBX mmap-new-segment/imm32 <span id="L35" class="LineNr">35 </span> 89/copy 1/mod/*+disp8 3/rm32/EBX <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> 0/r32/EAX 4/disp8 <span class="Delimiter"> . </span> <span class="Comment"># copy EAX to *(EBX+4)</span> -<span id="L36" class="LineNr">36 </span> <span class="Comment"># mmap(mmap_new_segment)</span> -<span id="L37" class="LineNr">37 </span> bb/copy <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> mmap_new_segment/imm32 <span class="Comment"># copy to EBX</span> -<span id="L38" class="LineNr">38 </span> b8/copy <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> <span class="Delimiter"> . </span> 0x5a/imm32/mmap <span class="Comment"># copy to EAX</span> +<span id="L36" class="LineNr">36 </span> <span class="Comment"># mmap(mmap-new-segment)</span> +<span id="L37" class="LineNr">37 </span> bb/copy-to-EBX mmap-new-segment/imm32 +<span id="L38" class="LineNr">38 </span> b8/copy-to-EAX 0x5a/imm32/mmap <span id="L39" class="LineNr">39 </span> cd/syscall 0x80/imm8 <span id="L40" class="LineNr">40 </span> <span class="Comment"># epilog</span> <span id="L41" class="LineNr">41 </span> 5b/pop-to-EBX @@ -100,7 +100,7 @@ if ('onhashchange' in window) { <span id="L45" class="LineNr">45 </span> <span id="L46" class="LineNr">46 </span>== data <span id="L47" class="LineNr">47 </span><span class="Comment"># various constants used here were found in the Linux sources (search for file mman-common.h)</span> -<span id="L48" class="LineNr">48 </span>mmap_new_segment: <span class="Comment"># type mmap_arg_struct</span> +<span id="L48" class="LineNr">48 </span>mmap-new-segment: <span class="Comment"># type mmap_arg_struct</span> <span id="L49" class="LineNr">49 </span> <span class="Comment"># addr</span> <span id="L50" class="LineNr">50 </span> 00 00 00 00 <span class="Comment"># null</span> <span id="L51" class="LineNr">51 </span> <span class="Comment"># len</span> @@ -114,7 +114,7 @@ if ('onhashchange' in window) { <span id="L59" class="LineNr">59 </span> <span class="Comment"># offset</span> <span id="L60" class="LineNr">60 </span> 00 00 00 00 <span class="Comment"># 0 since MAP_ANONYMOUS is specified</span> <span id="L61" class="LineNr">61 </span> -<span id="L62" class="LineNr">62 </span><span class="Comment"># vim:ft=subx:nowrap:tw&</span> +<span id="L62" class="LineNr">62 </span><span class="Comment"># vim:nowrap:textwidth=0</span> </pre> </body> </html> |