sử dụng im D inline lắp ráp cố gắng để thực hiện chức năng gọi stdcall động (với các thông số động)stdcall asm thông số dấu chấm động
tôi có lắp ráp sau args là một khoảng trống con trỏ đến một mảng các số nguyên 32bit argc là số của số đếm đối số là một con trỏ và địa chỉ hàm là địa chỉ hàm
MOV EBX, 0;
iterator:
MOV EAX, DWORD PTR [args];
PUSH EAX;
ADD EBX, 1;
ADD EAX, 4;
CMP EBX, DWORD PTR argc;
JNE iterator;
MOV EAX, ADDress;
CALL EAX;
MOV [ret], EAX;
RET 0;
các đối số dấu chấm động được chuyển như thế nào?
Trên ngăn xếp, như mọi thứ khác. PS: bạn không cần nạp con trỏ vào 'EAX', bạn có thể thực hiện' gọi dword ptr [Address] '. Cũng lưu ý rằng nếu bạn sử dụng 'push', bạn cần phải đảo ngược thứ tự đối số. – Jester
Quy ước cuộc gọi thường phụ thuộc vào ngôn ngữ, kiến trúc và hệ điều hành. Trên các giá trị dấu phẩy động x86 được đẩy lên ngăn xếp dấu chấm động. – qznc
@qznc, thậm chí không gần. – Johan