zoukankan      html  css  js  c++  java
  • OD研究各个语言的输出语句

    delphi的控制台语句是

        write

        和writeln

         od反编译一下delphi生成的exe   write('hello world');

         0040820D   ?  BA 40824000        mov edx,Project2.00408240                ;  hello world
         00408212   ?  E8 D9BCFFFF        call Project2.00403EF0
         00408217   ?  E8 BCA7FFFF        call Project2.004029D8                 ;;以上两行输出字符串hello world.
         下列四行代码存储 hello world 字符串。

           00408240   ?  68 656C6C6F        push 6F6C6C65
      00408245   ?  2077 6F            and byte ptr ds:[edi+6F],dh
      00408248   ?  72 6C              jb short Project2.004082B6
      0040824A   ?  64:0000            add byte ptr fs:[eax],al

       
        writeln:    wrilteln('hello world');

          00408255   .  BA 88824000   mov edx,Project2.00408288                ;  ASCII "hello world"
      0040825A   .  E8 D9BCFFFF   call Project2.00403F38
      0040825F   .  E8 98AAFFFF   call Project2.00402CFC
      00408264   .  E8 C3A3FFFF   call Project2.0040262C

         00408288   .  68 65 6C 6C 6>ascii "hello world",0                         ;该地址是hello  world的指针。

         VC++的

         printf: printf("hello world");

          00401028  |.  68 1C204200   push 121.0042201C                        ; /hello world
          0040102D  |.  E8 3E000000   call 121.printf                          ; printf

        引用地址:

          0042201C    68 656C6C6F     push 0x6F6C6C65
      00422021    2077 6F         and byte ptr ds:[edi+0x6F],dh
      00422024    72 6C           jb X121.00422092
      00422026    64:0000         add byte ptr fs:[eax],al

         printf("%d",1);

         00401032  |.  83C4 04       add esp,0x4
      00401035  |.  6A 01         push 0x1
      00401037  |.  68 1C204200   push 121.0042201C                        ;  ASCII "%d"
      0040103C  |?  E8 2F000000   call 121.printf
         引用地址:
      0042201C    25 64000068     and eax,0x68000064   ;;25 64 即 %d

      printf("%s,%s,%s","A","Bc","DEF");    

      00401028  |.  68 24204200   push 121.00422024                        ; /DEF
      0040102D   |.  68 1C204200   push 121.0042201C                        ; Bc
      00401032   |.  68 20204200   push 121.00422020                        ;  A
      00401037   |.  68 B42F4200   push 121.00422FB4                        ;  %s,%s,%s
      0040103C   |?  E8 2F000000   call 121.printf

         00422FB4    25 732C2573     and eax,0x73252C73       
      00422FB9    2C 25           sub al,0x25
      00422FBB    73 00           jnb X121.00422FBD                      ;  %s,%s,%s   25 73 c2 25 73 c2 25 73 00 末尾加0

         以上是debug版,用release版本的结果是相同的,地址也相同,都是401028

  • 相关阅读:
    Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾
    Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾
    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p
    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p
    Atitit.文件搜索工具 attilax 总结
    Atitit.文件搜索工具 attilax 总结
    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package
    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package
    Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结
    Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结
  • 原文地址:https://www.cnblogs.com/ayhsoft/p/3150519.html
Copyright © 2011-2022 走看看