15213-BombLab 备忘
来源:互联网 发布:馆陶县行知教育集团 编辑:程序博客网 时间:2024/05/18 14:11
C
#include <stdio.h>int main(int argc, char** argv) { int ret = printf("%s\n", argv[argc-1]); return ret; // number of characters printed }
argc
是命令行的参数个数argv[]
是argc
个参数,其中第0
个参数是程序名main
,以后的参数命令行后面跟的用户输入的参数argv[]
数组中至少有一个指针指向main( )
函数,即argv[0]
.
GDB
参考指令集:Summary of GDB commands for x86-64 Systems
x86-64寄存器内部关系
现代x86_64处理器具有64位寄存器,可以以backward-compatible方式用作32位寄存器,16位寄存器甚至8位寄存器。
寄存器 rax/eax/ax/al 内部结构关系:
|63..32|31..16|15-8|7-0| |AH. |AL.| |AX......| |EAX............||RAX...................|0x1122334455667788 ================ rax (64 bits) ======== eax (32 bits) ==== ax (16 bits) == ah (8 bits) == al (8 bits)
Assembly
Registers 根据 Calling Convention 可被分为两种:caller-save register 和 callee-save register.
callee-save register 由 callee 负责 push 进
或者 pop 出
stack
。
callee 要用 callee-save register 前, 需要先将其值 push 至 stack,用完后再 pop 出 stack,恢复 callee-save register 原始值。因此,对 caller 而言,该 register 值在调用前后保持一致。
参考链接:
- int main(int argc,char* argv[])详解
- Calling Convention
- 15-213 Recitation: Bomb Lab
- x86_64注册rax/eax/ax/al覆盖完整的寄存器内容
阅读全文
0 0
- 15213-BombLab 备忘
- bomblab
- CSAPP bomblab
- ICS bomblab总结
- CSAPP LAB2 BombLab
- Boom!!!计算机系统,从理解到爆炸,Bomblab
- 备忘
- 备忘
- 备忘
- 备忘
- 备忘
- 备忘
- 备忘
- 备忘
- 备忘
- 备忘
- 备忘
- 备忘
- java 常见几大习题
- 【Ubuntu】Ubuntu16.04和Win10双系统时间不同步
- jQuery模拟下拉选
- Spring的七大模块简介
- Understanding LSTM Networks
- 15213-BombLab 备忘
- Codeforces Round #435 (Div. 2) C. Mahmoud and Ehab and the xor
- C++数据结构实验报告:顺序表实现
- 1203:单词分割
- 记录json解析
- 表单标签
- Divide and Conquer -- Leetcode problem53. Maximum Subarray
- FreeRTOS 任务挂起和恢复
- 郵便実装