小编Swe*_*wen的帖子

装配leal和movl的区别

leal(%eax,%ecx,4), %edx
Run Code Online (Sandbox Code Playgroud)

当我从我的计算机系统书中读到时,如果$ eax包含x值并且%ecx包含y,那么上面的意思是x + 4y放入%edx.

如果是的话

movl(%eax,%ecx,4), %edx
Run Code Online (Sandbox Code Playgroud)

那么上面的leal表达是不是同一个?

据我所知,leal创建了可以引用的地址,而不是像movl那样自己引用,但是

当我看到leal(%eax,%ecx,4), %edxequals x+4y进入edx注册时,那么t it mean that it 'referenced'%eax and%ecx`和提取值x和y用于计算?

  • 不是吗"()"的意思是'引用'??

x86 assembly att

3
推荐指数
1
解决办法
1万
查看次数

语句handle(hstmt)到底是做什么的?在 ODBC 中

我是刚开始为 ODBC 编写 C 代码\n但这里我有问题...\n在搜索 C 的 odbc 函数教程之后,我仍然无法准确\n了解它们如何协作...

\n\n

该语句处理 hstmt 对数据库数据到底做了什么?\n我知道它控制我作为参数提供的 SQL 查询语句。但是,\n那么我作为查询给出的每个 SQL 语句都应该有每个语句句柄(hstmt)吗?或者一个语句句柄用于多个 SQL 查询语句?

\n\n

例如,

\n\n
lstrcpy((LPTSTR)update, L"insert into employee values  (\'Dshong\',\'summer\',\'LosAngeles\');");\nSQLExecDirect(hstmt1, update, SQL_NTS);\n\nlstrcpy((LPTSTR)update, L"insert into works values (\'Dshong\',\'Small Bank\',    2500);");\nSQLExecDirect(hstmt3, update1, SQL_NTS);\n\nlstrcpy((LPTSTR)select, L"select * from works;");\nif (SQLExecDirect(hstmt, select, SQL_NTS) != SQL_SUCCESS)\n    return printf("can\xe2\x80\x99t exec direct");\n\n\nlstrcpy((LPTSTR)select1, L"select * from employee;");\nif (SQLExecDirect(hstmt2, select1, SQL_NTS) != SQL_SUCCESS)\n    return printf("can\xe2\x80\x99t exec direct");\n
Run Code Online (Sandbox Code Playgroud)\n\n

我应该像这样给出两个插入语句和两个带有四个 hstmt 的选择语句吗?

\n\n

如果我这样给予,

\n\n
lstrcpy((LPTSTR)insert, L"insert into employee values (\'Dshong\',\'summer\',\'LosAngeles\');");\nSQLExecDirect(hstmt1, insert, SQL_NTS);\n …
Run Code Online (Sandbox Code Playgroud)

c sql odbc

2
推荐指数
1
解决办法
4908
查看次数

C语言中带有'select()'的多客户端的套接字编程

这是关于多客户端的套接字编程的问题.

当我在考虑如何将我的单个客户端和服务器程序转换为多客户端时,我遇到了如何实现它.但即使我在寻找一切,也存在一种混乱.

  1. 我想用select()实现,因为它比fork更重.但我有很多全局变量不能共享,所以我没有考虑使用线程.

  2. 所以要使用select(),我可以掌握有关FD_functions的一般知识,但这里我有我的问题,因为一般在网站上的例子中,它只显示多客户端服务器程序...

因为我在客户端和服务器程序中使用顺序recv()和send(),它在单个客户端和服务器上工作得很好,但我不知道如何为多个静音更改它.客户端是否也必须解锁?select()的所有要求是什么?

我在服务器程序上做的事情是多客户端

1)我使用SO_REUSEADDR为重用地址设置了socket选项

2)使用fctl()使用O_NONBLOCK将我的服务器设置为非阻塞模式.

3)并将超时参数设置为零.

并在上面正确使用FD_functions.

但是,当我从第二个客户端运行我的客户端程序时,客户端程序阻塞,而不是被服务器接受.

我想原因是因为我将服务器程序的主要功能部分放入'recv was> 0'的情况.

例如,使用我的服务器代码,

(我使用temp并读取为fd_set,并在此情况下读为master)

int main(void)
{

  int conn_sock, listen_sock;
  struct sockaddr_in s_addr, c_addr;
  int rq, ack;
  char path[100];
  int pre, change, c;
  int conn, page_num, x;
  int c_len = sizeof(c_addr);
  int fd;
  int flags;
  int opt = 1;
  int nbytes;
  fd_set read, temp;

  if ((listen_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
  {
    perror("socket error!");
    return 1;
  }

  memset(&s_addr, 0, sizeof(s_addr));

  s_addr.sin_family = AF_INET;
  s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  s_addr.sin_port …
Run Code Online (Sandbox Code Playgroud)

c sockets networking select

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×2

assembly ×1

att ×1

networking ×1

odbc ×1

select ×1

sockets ×1

sql ×1

x86 ×1