C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■24281  生成されるアセンブラコードについての疑問
□投稿者/ ネタ好き未記入 -(2008/08/31(Sun) 22:16:31)

    分類:[C/C++] 

    2008/08/31(Sun) 22:17:05 編集(投稿者)

    いつもお世話になっています。
    今回はVCで生成されるアセンブラについて分からないことがありますので訊きます。
    アセンブラを調べる事が目的なので、以下の意味のないCプログラムをコマンドラインでコンパイルしました。
    ※VC2008を使用しました

    //対象となるプログラム
    void main(void) {
    char ch = 0;
    int in = 0;
    float fl = 0;
    double dou = 0;
    }

    cl ファイル名 /Fas

    //生成されたアセンブラ(MASM)

    ; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.21022.08

    TITLE ファイル名のフルパス
    .686P
    .XMM
    include listing.inc
    .model flat

    INCLUDELIB LIBCMT
    INCLUDELIB OLDNAMES

    PUBLIC __real@0000000000000000
    PUBLIC __real@00000000
    PUBLIC _main
    EXTRN __fltused:DWORD
    ; COMDAT __real@0000000000000000
    ; File f:\cの復習\sytemtypes.c
    CONST SEGMENT
    __real@0000000000000000 DQ 00000000000000000r ; 0
    CONST ENDS
    ; COMDAT __real@00000000
    CONST SEGMENT
    __real@00000000 DD 000000000r ; 0
    ; Function compile flags: /Odtp
    CONST ENDS
    _TEXT SEGMENT
    _ch$ = -21 ; size = 1
    _fl$ = -20 ; size = 4
    _dou$ = -16 ; size = 8
    _in$ = -4 ; size = 4
    _main PROC
    ; Line 1
    push ebp
    mov ebp, esp
    sub esp, 24 ; 00000018H
    ; Line 2
    mov BYTE PTR _ch$[ebp], 0
    ; Line 3
    mov DWORD PTR _in$[ebp], 0
    ; Line 4
    fldz
    fstp DWORD PTR _fl$[ebp]
    ; Line 5
    fldz
    fstp QWORD PTR _dou$[ebp]
    ; Line 6
    xor eax, eax
    mov esp, ebp
    pop ebp
    ret 0
    _main ENDP
    _TEXT ENDS
    END


    このコードでどうしてもわからないのが次の部分です。

    PUBLIC __real@0000000000000000
    PUBLIC __real@00000000
    PUBLIC _main

    main関数の引数はvoidにしているはずなのに、この意味不明な公開変数?_real@はなにものなのでしょうか?
    因みに

    void main(){
    }

    のコードをコンパイルした時は
    PUBLIC _main
    だけでした。
    どうしても気になります。
    ご存じの方教えて下さい。よろしくお願いいたします。
親記事 /過去ログ45より / 関連記事表示
削除チェック/

■42774  Re[1]: 文字列抽出
□投稿者/ επιστημη -(2009/10/21(Wed) 10:29:51)
>
    2009/10/21(Wed) 10:30:26 編集(投稿者)

    > ○○○  あいうえお
    > ×××  かきくけこ
    > △△△  さしすせそ
    >
    > という中から△△△という文字列を検索して、見つかったら(△△△)その右側の文字列を抽出したいと考えております。

    各行のアタマ3文字を切り出し、それが"△△△"に一致したなら、3文字目以降を切り出せばいい。

    string[] lines; // 入力
    foreach ( string line in lines ) {
    if ( line.Substring(0,3) == "△△△" ) { // みつけたら
    Console.WriteLine( line.Substring(3) ); // かくー
    }
    }

    > 分かりづらい質問で申し訳ございません。

    と思うなら分かりやすく書く努力をしてください。
記事No.42769 のレス /過去ログ73より / 関連記事表示
削除チェック/

■75685  別WebサイトにPOSTでファイル送信
□投稿者/ こまっくま -(2015/04/23(Thu) 20:29:51)

    分類:[ASP.NET (VB)] 

    タイトルの件、別サイトにPOST送信でファイルを送るプログラムを
    作成しております。

    下記サイトを参考にしファイルを送信することができましたが
    これに追加して別サイトとのセキュリティ確保のためパスワード
    やIDも送りたいのですがどのようにしたらよいのでしょうか。


    "multipart/form-data"でデータを送信する
    http://dobon.net/vb/dotnet/internet/webrequestpost.html#multipart
親記事 /過去ログ127より / 関連記事表示
削除チェック/

■88591  Re[10]: フォームの連続的な書き換えに関して
□投稿者/ パヨンパヨン -(2018/09/09(Sun) 14:21:14)
    方法3が遅いのは
    Inovokeになっているからでした
    BeginInvokeにすると100ミリ秒くらいになりました。
記事No.88546 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88594  Re[11]: フォームの連続的な書き換えに関して
□投稿者/ 魔界の仮面弁士 -(2018/09/09(Sun) 17:43:00)
    No88591 (パヨンパヨン さん) に返信
    > 方法3が遅いのは
    > Inovokeになっているからでした
    > BeginInvokeにすると100ミリ秒くらいになりました。
    BeginInvoke は非同期実行なので、呼び出した処理が完了しないうちに、
    直ちに呼び出し元の次の行が実行されてしまうことなります。

    同期的な待ち合わせが必要なら、
     Dim ar As IAsyncResult = MyBase.BeginInvoke(……)
     Thread.Sleep(10)
     Dim result As Object = MyBase.EndInvoke(ar)
    といった書き方を使うこともできます。

    スレッドプールは有限なのでむやみやたらに BeginInvoke を
    投げっぱなしでループで呼び続けるのは、いくら何でも
    乱暴すぎますように思います。
    そもそも UI スレッドは、基本的に単一スレッドですし…。

    No88575 の私の例でも、BeginInvoke は使っていませんよね。



    No88590 (パヨンパヨン さん) に返信
    > Dim sw As New Stopwatch
    > sw.Reset()
    > sw.Start()
    これは
     Dim sw = Stopwatch.StartNew()
    とも書けますね。


    > Delegate Sub delegate_SetText(TBox As TextBox, i As Integer)
    delegate_SetText 型は Action(Of TextBox, Integer) 型と同義ですね。


    > (HRESULT からの例外:0x80010100 (RPC_E_SYS_CALL_FAILED)) が発生しました。
    このエラーが発生する要因は一つではないため特定はできませんが、たとえば
    非同期呼び出しの頻度が多すぎてビジー状態に陥った際に発生することがあるようです。



    > For i = 1 To 10000
    > のところを
    > For i = 1 To 100000
    > に変更すると、同じエラーが発生します。
    手元の環境(Core i7-8650U / 4 コア 8 スレッド)では再現しませんでしたが、このへんの値は、環境にもよるのでしょうね。

    下記は Control.BeginInvoke ではなく、Delegate.BeginInvoke の話題ですが、参考までに。
    http://d.hatena.ne.jp/akiramei/20060123/p1
記事No.88546 のレス /過去ログ152より / 関連記事表示
削除チェック/

■91372  Re[4]: SizeChangedにコードを書くとエラーが出てしまう
□投稿者/ 麺 -(2019/06/19(Wed) 04:25:12)
    PictureBox1_SizeChanged にはForm1は書かれてありません。
    上で述べた通り、別のモジュールで定義している
    変数のみです。
    その別のモジュールはForm1とは無関係ですので
    再帰しているように見えないのですが・・・
記事No.91366 のレス /過去ログ157より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -