当前位置: 首页 > article >正文

计算机体系结构知识(二)-gdb和args

gdb使用

  1. make clean
  2. make
  3. make gdb
  4. run
  5. 如果希望使用tui,可以采用layout src

我的代码中cmd_si采用if(args && *args != ‘\0’)检验参数的原因

if(args && *args != ‘\0’)
解释
args 检查:
args 是一个指向字符的指针 (char *)。
args 为 NULL 表示没有传递额外的参数。
if(args) 检查 args 是否为 NULL。如果 args 是 NULL,整个条件表达式为假,不会执行后续的 *args != ‘\0’ 检查。
*args 检查:
*args 是对 args 指针所指向的字符的解引用。
*args 为 \0 表示 args 指向的字符串是空的。
if(*args != ‘\0’) 检查 args 指向的字符串是否为空。
优点
安全性:先检查 args 是否为 NULL,避免在 args 为 NULL 时进行解引用操作,防止段错误(Segmentation Fault)。
完整性:确保 args 既不为 NULL 也不为空字符串。
if(*args != ‘\0’)
解释
直接解引用:
*args 直接解引用 args 指针。
如果 args 是 NULL,直接解引用会导致段错误(Segmentation Fault)。
缺点
不安全:如果 args 是 NULL,直接解引用 *args 会导致程序崩溃。
不完整:只检查字符串是否为空,但不检查 args 是否为 NULL。
示例代码
安全的版本
C
深色版本
static int cmd_si(char *args){
int n = 1; // 默认执行一条指令

if(args && *args != '\0'){  // 检查 args 是否为 NULL 且不为空字符串
    n = atoi(args);  // 将参数转换为整数
    if (n <= 0) {  // 检查参数是否有效
        printf("Invalid number of instructions: %s\n", args);
        return -1;
    }
}

for(int i = 0; i < n; i++){  // 执行 n 条指令
    cpu_exec(1);
}  

return 0;  // 返回成功
</

http://www.kler.cn/a/383443.html

相关文章:

  • MyBatis 返回 Map 或 List<Map>时,时间类型数据,默认为LocalDateTime,响应给前端默认含有‘T‘字符
  • 训练和部署Qwen2.5,实战教程步骤,训练qwen2.5教程,vLLM,Open WebUI,LLaMA-Factory
  • Elasticsearch+kibana+filebeat的安装及使用
  • 接口测试用例设计的关键步骤与技巧解析!
  • #渗透测试#SRC漏洞挖掘# 操作系统-Linux系统基础02之Openssl、软连接与硬连接、用户账号数据库
  • 协议栈攻击分类(CISP-PTE笔记)
  • Linux -- 初识线程
  • 【鉴权】OAuth 2.0: 高度灵活与安全的身份认证框架
  • 百度实习生内推
  • Java实战项目-基于微信小程序的校园生活互助服务小程序
  • 供热的一些基础技术数据
  • 2024年10月全球人工智能领域的重大事件盘点
  • Prompt Engineering介绍
  • AI大模型重塑软件开发流程:定义、应用场景、优势、挑战及未来展望
  • 父组件调用函数式子组件,并向子组件传递函数参数。
  • Web3中的区块链技术:从基础设施到应用的演变
  • Python Matplotlib:基本图表绘制指南
  • 社交电商全球化:开源链动模式的引领与挑战
  • uniapp 整合 OpenLayers - 测距测面
  • 安装mysql主从复制
  • SpringMVC快速上手
  • 微信小程序uniapp基于Android的流浪动物管理系统 70c3u
  • mysql代码生成器
  • Linux云计算个人学习总结(一)
  • 遥测终端机RTU产品如何选型和配置
  • 人工智能从业证书--抓住未来十年的趋势!