一、实验

我选择的是第20号系统调用,getpid

代码如下:

/* getpid.c */
#include <unistd.h>
#include <stdio.h>

int main()
{
    pid_t pid;
    pid = getpid();
    printf("pid = %d \n",pid);
    return 0;
}

嵌入汇编代码后:

/* getpid_asm.c */
#include <unistd.h>
#include <stdio.h>

int main()
{
    pid_t pid;
    pid = getpid();
    asm volatile(
            "mov $0x14,%%eax\n\t" /* 将系统调用号20放入eax中。 */
            "int $0x80\n\t" /* 中断向量号0x80,即128。int 128 执行系统调用。 */
            "mov %%eax,%0\n\t" /* 返回值保存在eax中,将它赋值给pid */
            : "=m" (pid)   
        );  
    printf("pid = %d \n",pid);
    return 0;
}

相关文章:

  • 2022-02-01
  • 2021-08-03
  • 2021-05-29
  • 2021-07-24
  • 2021-05-21
  • 2021-10-06
  • 2021-10-11
  • 2021-06-06
猜你喜欢
  • 2022-02-12
  • 2022-01-31
  • 2021-10-06
  • 2021-09-13
  • 2021-07-19
  • 2021-05-27
  • 2022-02-21
相关资源
相似解决方案