level 8
/*默认的是at&t的汇编语法, 如果要用intel汇编语法要在文件顶部加入开关{$ASMMODE intel}
inline, inline是指在编译时,编译器把子程序写到主程序里
forword, fpc关键字,函数(过程) 提前声明用的
overload, 重载,函数名(过程名)相同,但是参数列表不相同
far, 标明了函数调用协定,指出函数可以被远程调用。其他程序可以用 dll 形式调用程序内的函数
assembler 可以在函数(过程)声明处使用,整个函数将要 用汇编书写哦
*/
{$ASMMODE intel}
{$mode objfpc}
procedure y();forward; //过程y的提前声明
procedure x();assembler;
asm
ret;
end;
procedure y(); //过程y的实现
begin
//ToDo
end;
procedure z();inline;
begin
//z为inline函数,在编译的时候这里的代码会写到主程序里,省去调用的时间(递归不能用)
end;
function f(a,b:integer):integer; //函数f的 overload
begin
exit(a+b);
end;
function f(a,b,c:integer):integer; //函数f的 overload
begin
exit(a+b+c);
end;
function f(a,b:double):double;
begin
exit(a+b);
end;
var
c:char='a';
begin
z();
writeln( f(1,2) );
writeln( f(1,2,3) );
//内嵌汇编
try
asm
mov eax, 1
mov al, byte ptr [c]
int $13
end;
except
writeln('保护模式下,汇编代码异常');
end;
end.
2019年03月24日 04点03分