問題タブ [cdecl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
507 参照

c - どのプログラムでも使用できないものを除いて、cdecl で許可されていない変数名は何ですか?

私はcdeclをいじっていましたが、GCC はそれらを完全にコンパイルしますが、一部の名前は識別子として許可されていないことに気付きました。

たとえば、私が書くと

int ptr;

また

int ポインター;

また

int 配列;

cdecl は「構文エラー」を出しますが、プログラムで使用すると、GCC は問題なくコンパイルします。そのため、cdecl で許可されていない識別子がいくつかあります。

cdecl では使用できないが、プログラム (つまり、プログラムのコンパイル) で使用できる識別子はどれですか? なぜ彼らは許可されていないのですか?

0 投票する
1 に答える
2140 参照

io - NASMアセンブラでx86でSyscallを使用してstdin/stdoutとの間でバイトを読み書きする方法は?

stdin から文字列を読み取り、x86、NASM、および Syscalls を使用して出力しようとしています。バイトの読み取りは関数になり、バイトの書き込みは関数になります。stdin から文字列を読み取り、各文字を配列に入れています。これが私の最初のアイデアです:

サンプル入力:

出力例:

関数はcdeclで使用する必要がありますが、これは正しく行っているとは思いません。また、文字をarrに入れていないことにも気付きました。

0 投票する
0 に答える
269 参照

assembly - ASM x86 での C++ 呼び出し規約の実装

ASM x86 を使用して文字列を難読化する簡単なプログラムを作成しました。ユーザーは目的の文字列を入力し、Ekey難読化する文字列のキー ( ) を選択する必要があります。(シフト演算子またはテーブルルックアップで左右のビットローテーションをエミュレートできることは知っていますが、ASMに慣れようとしています)

サブルーチンにCdeclパラメーター ( EKey& ) を渡すなど、受け入れられている C++ 標準の呼び出し手順を採用するようにプログラムを変更しようとしています。tempCharobfuscate

何時間にもわたる調査にもかかわらず、私はうまくいかなかったので、もう少し経験のある人が親切にガイダンスを提供してくれることを期待してここに来ました.

関連する関数は次のとおりです。

そしてobfuscateサブルーチン:

お読みいただきありがとうございます。

0 投票する
1 に答える
314 参照

c++ - 明示的にリンクされた DLL の CDecl クリーンアップ コード

アンマネージ Win32 DLL に可変数の引数を取る関数があるため、他の呼び出し規約__cdeclではなく、その必要があります。__stdcall現時点では、DLL に明示的にリンクしています (つまり、DLL のファイルにリンクするのではなく、LoadLibraryandを使用しています)。GetProcAddress.lib

関数を問題なく呼び出すことができますが、cdecl各呼び出しの後に次のインライン アセンブリ命令を追加する必要があるためです。

インライン アセンブリを含めないと、addVecs の呼び出し後にプログラムがクラッシュします。

インライン アセンブリ命令が不要になるように EXE または DLL を作成する方法はありますか? たとえば、printf__cdecl関数ですが、呼び出すたびにスタックが確実にクリーンアップされるようにインライン アセンブリを記述する必要はありません。

0 投票する
0 に答える
116 参照

recursion - x8086 アセンブリでの再帰的プロシージャ

私が取得しようとしているシリーズの明示的な定義は、1*2 + 2*3 + 3*4 ... + i(i+1) です。

私はそれを計算して、シリーズの再帰的定義が a_n = a_(n-1) + 2(n-1) であり、a_1 = 0 を基本ケースとしていることがわかりました。計算しようとしているシリーズではなく、このコードが偶数シリーズを提供し続ける理由を理解しようとしています: {2,4,6,8,10 ...}