HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0212
名無し機械語 呼び出し2解決


名無し

リンク

2017/2/12(Sun) 15:41:30|NO.78249

2つの数を足して返すだけの関数を機械語で書いたのですが、エラーになって動きません。
何が間違っているのでしょうか。

// add.c int add(int a, int b) { return a + b; } // 開発者コマンド プロンプト for VS2015 cl /c /Od /FAc add.c // add.cod ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.00.24215.1 TITLE C:\add.c .686P .XMM include listing.inc .model flat INCLUDELIB LIBCMT INCLUDELIB OLDNAMES PUBLIC _add ; Function compile flags: /Odtp _TEXT SEGMENT _a$ = 8 ; size = 4 _b$ = 12 ; size = 4 _add PROC ; File c:\add.c ; Line 2 00000 55 push ebp 00001 8b ec mov ebp, esp ; Line 3 00003 8b 45 08 mov eax, DWORD PTR _a$[ebp] 00006 03 45 0c add eax, DWORD PTR _b$[ebp] ; Line 4 00009 5d pop ebp 0000a c3 ret 0 _add ENDP _TEXT ENDS END //test.hsp #uselib "kernel32.dll" #func VirtualProtect "VirtualProtect" var, int, int, var #define global PAGE_EXECUTE_READWRITE 0x00000040 dim fn, 3 temp = 0 VirtualProtect fn, 11, PAGE_EXECUTE_READWRITE, temp fn = $8bec8b55, $45030845, $00c35d0c prm = 3, 4 mes callfunc(prm, fn, 2)



この記事に返信する


osakana

リンク

2017/2/12(Sun) 17:18:42|NO.78250

callfunc の第二パラメータには
実行する関数のアドレスを渡します。



名無し

リンク

2017/2/12(Sun) 17:31:41|NO.78252

動きました。
こんな簡単な間違いだったとは。
ありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.