0%

AT&T Assembly

转载自:AT&T Assembly Syntax

vivek, Mon, 2003-09-01 23:53
Updated: May/10 ‘06

This article is a ‘quick-n-dirty’ introduction to the AT&T assembly language syntax, as implemented in the GNU Assembler as(1). For the first timer the AT&T syntax may seem a bit confusing, but if you have any kind of assembly language programming background, it’s easy to catch up once you have a few rules in mind. I assume you have some familiarity to what is commonly referred to as the INTEL-syntax for assembly language instructions, as described in the x86 manuals. Due to its simplicity, I use the NASM (Netwide Assembler) variant of the INTEL-syntax to cite differences between the formats.

The GNU assembler is a part of the GNU Binary Utilities (binutils), and a back-end to the GNU Compiler Collection. Although as is not the preferred assembler for writing reasonably big assembler programs, its a vital part of contemporary Unix-like systems, especially for kernel-level hacking. Often criticised for its cryptic AT&T-style syntax, it is argued that as was written with an emphasis on being used as a back-end to GCC, with little concern for “developer-friendliness”. If you are an assembler programmer hailing from an INTEL-Syntax background, you’ll experience a degree of stifling with regard to code-readability and code-generation. Nevertheless, it must be stated that, many operating systems’ code-base depend on as as the assembler for generating low-level code.

阅读全文 »

配置说明

  1. 使用nvidia/cuda:8.0-devel-ubuntu16.04镜像
  2. 使用源码编译安装caffe
  3. 使用源码编译安装protobuf-3.5.1

基础环境准备

1
2
3
4
5
6
apt update
apt install libgflags-dev libgoogle-glog-dev libatlas-base-dev libhdf5-* libgflags-dev libgoogle-glog-dev liblmdb-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev -y
apt install git vim python-pip autoconf unzip -y
apt install --no-install-recommends libboost-all-dev python-numpy -y
easy_install pip==20.3.4
pip install opencv-python==4.2.0.32 scikit-image

编译protobuf-3.5.1

参考链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cd /workspcae/
wget https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.5.1.tar.gz
tar zxvf v3.5.1.tar.gz
cd protobuf-3.5.1/
./autogen.sh # 运行此脚本需要访问一些404网站,因此需要具备访问外网的网络环境
./configure
make -j1 # 后面的1可以根据实际电脑cpu核心数量修改
make check -j1
make install
ldconfig
protoc --version # 查看版本信息

cd python/
python setup.py install

编译caffe

参考链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /workspace/
git clone https://github.com/BVLC/caffe
cd caffe/
cp Makefile.config.example Makefile.config
# 修改Makefile.config中的配置
# 将`/usr/include/hdf5/serial/`和`/usr/local/lib/python2.7/dist-packages/numpy/core/include/` 添加到`INCLUDE_DIRS`中
# 将`/usr/lib/x86_64-linux-gnu/hdf5/serial`添加到`LIBRARY_DIRS`中
make all -j1 # 后面的1可以根据实际电脑cpu核心数量修改

# 此处是编译并运行测试,可以根据实际情况省略
make test -j1
make runtest

make pycaffe
make distribute

若执行python时无法import caffe,运行命令export PYTHONPATH=/workspace/caffe/python:$PYTHONPATH临时修改PYTHONPATH

前言

目前常用的xx协议有:

  1. shadowsocks
  2. VMESS
  3. VLESS(VMESS的改进版)
  4. Trojan

shadowsocks和VMESS目前使用依旧广泛。VLESS是为了解决“总结近期发现的V2ray的弱点”中提出的问题而重新设计的一种协议,相比VMESS更加轻量、安全、高效。目前VMESS和VLESS最常用的组合为WebSocket+TLS+VMESS/VLESS的形式,这种形式在安全性上可以说和“主打”安全的Trojan基本相同(基本原理相同)。但是前者的配置相对来说更加复杂,而且前者性能相比后者差了很多(单机测试)。

本文主要介绍在同一台机器上配置V2ray+Trojan-Go并且二者共同使用443端口方法。整个网络流量流向图如下

网络流量流向图

阅读全文 »

HTTP部分

  1. HTTP1.1相比HTTP1.0做了哪些改进?

    HTTP1.0在每次进行传输前都要重新建立一个TCP链接。HTTP1.1中可以在一个TCP链接中进行多次HTTP传输。实现了管道网络传输。即发起一个请求A后不需要等待返回即可继续发起请求B。但是对于服务端来说,会按照接收到的请求的顺序,依次响应,这时后到的请求需要等待先到的请求响应后才可被响应,因此会出现队头阻塞的情况。

阅读全文 »

面试主要包括算法、项目、理论知识、自我评价四部分

算法

前K个高频单词 leetcode

给一个英文文本,其中每个单词以空格分隔,统计其中单词的频次并找出其中出现频次最高的十个单词。

我想出的方法空间复杂度较高,这里给出我当时的代码。

阅读全文 »

面试涉及的内容主要有算法、操作系统、计算机网络和项目。

算法部分

  1. 搜索二维矩阵 lee4tcode

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:

每行的元素从左到右升序排列。
每列的元素从上到下升序排列

  1. 环形链表 leetcode1leetcode2

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

阅读全文 »

在盘或移动硬盘上安装操作系统

前言

在U盘或者移动硬盘上安装操作系统的使用场景是什么?

  1. 实现更大的自由性,在绝大多数情况下,1台电脑+安装好系统的盘或移动硬盘就可以在自己配置好的系统环境下进行操作,我们仅需要带着U盘或者移动硬盘即可。
  2. 将U盘挂载到虚拟机中,实现不同设备之间虚拟机的共享。
阅读全文 »

题目:

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)

牛客网

阅读全文 »

题目:

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

牛客网

阅读全文 »

题目:

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

牛客网

阅读全文 »