通过 PHP 在短信中嵌入 URL 链接
有什么方法可以嵌入URL链接,即google在通过[myphoneNumber]@txt.att.att.net发送的SMS消息中?我的邮件配置设置为" text/html",但该链接在短信中显示为不可粘的纯文本... 有什么想法吗?!!? 解决方案 大多数手机都会自动换入URL,但是不可能以您尝试执行的方式给出链接.只需发送www.google.com,而接收设备将为您链接. 其他解决方案 否,可单击的链接取决于手机.有些手机会解析SMS并建立链接"可单击",另一些则不会. 其他解决方案 SMS阅读器不是Webbrowser.期望手机渲染短信,因为网页正在推动事情. 有些手机有一些智能,如果在其中发现了URL,则可以将其缩小,但这取决于手机.
14 2024-04-22
编程技术问答社区
如何将矢量中的数值相加
在我的代码中,我解决了积分 y=x^2-4x+6 我使用了SSE-它允许我一次对4个值进行操作.我制作了程序,该程序以0到5的值求解该积分,分别为五个4元素向量n1,n2,n3,n4. .data n1: .float 0.3125,0.625,0.9375,1.25 n2: .float 1.5625,1.875,2.1875,2.5 n3: .float 2.8125,3.12500,3.4375,3.75 n4: .float 4.0625,4.37500,4.6875,5 szostka: .float 6,6,6,6 czworka: .float 4,4,4,4 .text .global main main: movups (n1),%xmm0 mulps %xmm0,%xmm0 movups (szostka),%xmm2 addps %xmm2,%xmm0 movups
16 2024-04-22
编程技术问答社区
在'asm'中不可能有约束: 挥发性__的约束
我从几天开始尝试编写非常简单的内联汇编代码,但没有任何效果.我有IDE NetBeans和编译器Mingw. 我的最新代码是: uint16 readle_uint16(const uint8 * buffer, int offset) { unsigned char x, y, z; unsigned int PORTB; __asm__ __volatile__("\n" "addl r29,%0\n" "addl r30,%1\n" "addl r31,%2\n" "lpm\n" "out %3,r0\n" : "=I" (PORTB) : "r" (x), "r" (y), "r" (z) ); return value; } 但是我每次都会收到相同的消息"错误:'asm'中的不可能约束". 我试图用一行写全部或使用不同
34 2024-04-10
编程技术问答社区
地址前的星号和推送指令,被推送到哪里?
我正在从事一项作业,我需要使用GDB了解编译的C程序.我正在尝试按照说明进行操作,但是很难准确了解jmp命令跳到*之前的地址时正在做什么.我看了地址所在的位置,但它落在两个单词之间.跳跃后,有一个十六进制值的命令.我只是假设这基本上就像使用指针,而push命令覆盖字节值,将十六进制值推到上面.我不确定我离我有多远.这是我正在查看的代码的一部分.由于已编译它,因此我一直在使用x/10i $pc命令(根据我的位置更改显示的指令数量)以查看排队的下一个说明. => 0x08048334 : jmp *0x8049798 0x0804833a : push $0x10 0x0804833f : jmp 0x8048304 第二个jmp开始开始一系列类似事件.这是jmp指向的地址位置.这是我唯一一次在编译C文件的字节降低中看到此地址: 8049795: 83 04 08 3a
18 2024-04-10
编程技术问答社区
这个汇编代码将如何被翻译成c语言?
在C中,我有以下结构: typedef struct _Node{ int data; struct _Node *left; struct _Node *right; } Node; 和以下汇编代码: .section .text .global _start _start: mov $8, %esi mov $A, %rdi call func movq $60, %rax movq $0, %rdi syscall func: pushq %rbp movq %rsp, %rbp cmp (%rdi), %esi jne continue mov $1, %eax jmp finish continue: cmpq $0, 4(%rdi) je next pushq %rdi mov 4(%rd
20 2024-04-09
编程技术问答社区
使用RDTSC测量时间差-结果太大
我正在尝试计算运行单个ASM指令所需的CPU周期数.为此,我创建了此功能: measure_register_op: # Calculate time of required for movl operation # function setup pushl %ebp movl %esp, %ebp pushl %ebx pushl %edi xor %edi, %edi # first time measurement xorl %eax, %eax cpuid # sync of threads rdtsc # result in edx:eax # we are measuring instuction below movl %eax, %edi # second time measurem
16 2024-04-09
编程技术问答社区
memset movq giving segfault
我在MovQ(%RSI,%rcx)行中获得了segfault. 我知道您不能进行MEM-> MEM MOV,所以我通过临时寄存器进行了操作. (RSI%),%RCX,然后在loop%rcx中(%rdi).这是我的代码: experimentMemset: #memset(void *ptr, int value, size_t num) #%rdi #%rsi #%rdx movq %rdi, %rax #sets rax to the first pointer, to return later .loop: cmp $0, (%rdx) #see if num has reached 0 je .end cmpb $0, (%rdi) #see if string has ended als
8 2024-04-09
编程技术问答社区
了解ATT汇编语言
C版本: int arith(int x, int y, int z) { int t1 = x+y; int t2 = z*48; int t3 = t1 & 0xFFFF; int t4 = t2 * t3; return t4; } 同一程序的ATT汇编版本: x at%ebp+8,y at%ebp+12,z at%ebp+16 movl 16(ebp), %eax leal (%eax, %eax, 2), %eax sall $4, %eax // t2 = z* 48... This is where I get confused movl 12(%ebp), %edx addl 8(%ebp), %edx andl $65535, %edx imull %edx, %eax 我了解除了剩下的偏移之外,在程序的所有点上都在做所有事情. 我认为它将向后
12 2024-04-09
编程技术问答社区
是否可以确定哪些寄存器的参数和变量被存储?
我仍然不确定汇编程序如何使用寄存器 说我有一个程序: int main(int rdi, int rsi, int rdx) { rdx = rdi; return 0; } 会在组装中将其转换为: movq %rdx, %rdi ret rax; 我是AT&T的新手,很难预测何时使用某个寄存器. 从计算机系统中查看此图表 - 程序员的观点,第三版,R.E.科比和D. R. O'Hallaron: 解决方案 确定存储哪些寄存器参数和变量? 仅在功能的进入和退出时. 也无法保证函数中将使用哪些寄存器,即使是函数参数的变量.编译器可以(而且经常)将变量移动到寄存器之间以优化寄存器/堆栈使用情况,尤其是在寄存器式的架构上,例如x86. 在这种情况下,像rdx = rdi这样的简单分配操作可能根本无法编译到任何汇编代码,因为编译器将简单地识别两个值现在可以在寄存器%rdi中找到.即使对于更复杂的操作,例如rdx =
10 2024-04-09
编程技术问答社区
fstcw汇编操作数类型不匹配
我正在尝试使用C中的在线组件中指定的圆形模式将输入双重围起来.为此,我需要使用fstcw抓住FPU控制词,然后更改单词中的位.不幸的是,我在第一行遇到了一个错误: double roundD(double n, RoundingMode roundingMode) { asm("fstcw %%ax \n" ::: "ax"); //clobbers return n; } 我收到的汇编错误是: 错误:操作数类型" FSTCW"的不匹配. 我的印象是此代码片段应将FPU控制单词存储在AX寄存器中,该单词的长度为16位,该单词的长度也为16位.可以肯定的是,我还使用EAX寄存器而不是AX测试了上述代码,并收到了相同的错误. 我在这里可能会缺少什么?请让我知道是否需要任何其他信息. 解决方案 也许您正在与这有助于根据FP进行比较结果有效分支(在存在比较到eflags),这种情况比控制词更频
24 2024-04-09
编程技术问答社区
我如何将输入传入扩展asm?
从我的 frest此代码. int main(){ asm("movq $100000000, %rcx;" "startofloop: ; " "sub $0x1, %rcx; " "jne startofloop; "); } 我想进行循环的数量a c变量,所以我在阅读此文档. int main(){ int count = 100000000; asm("movq %0, %rcx;" "startofloop: ; " "sub $0x1, %rcx; "
12 2024-04-08
编程技术问答社区
试图对一个函数进行反向工程
我正在尝试更多地了解x86中的汇编.我知道这里有一个神秘功能,我知道返回int并采用int参数. 因此看起来像int mystery(int n){}.但是,我无法弄清楚C中的功能.大会是: mov %edi, %eax lea 0x0(,%rdi, 8), %edi sub %eax, %edi add $0x4, %edi callq repz retq mov %edi, %eax shr %eax and $0x1, %edi and %edi, %eax retq 我不明白LEA在这里做什么以及可能是什么样的功能. 解决方案 装配代码似乎是计算机生成的,并且由于无条件分支之后有A repz retq,因此可能是由GCC编译的.还有一个迹象表明,当没有尾巴调用(jmp)而不是call时,到达mystery_util时,代码是用-O1编译的(较高的优化级别可能会在函数上嵌入没
24 2024-04-07
编程技术问答社区
我的(AT&T)汇编(x86-x64)代码应该递增,但没有递增
我正在尝试在汇编中制定一个小程序(对于AT&T).我正在尝试以整数的形式从用户那里获取输入,然后将其递增,然后输出增量值.但是,该值不会增加.我花了最后几个小时尝试所有可以想到的一切,但是它仍然不起作用,所以我想到我可能会理解组装中的一个概念,这使我没有发现错误.这是我的代码: 1 hiString: .asciz "Hi\n" 2 formatstr: .asciz "%ld" 3 4 .global main 5 6 main: 7 movq $0, %rax #no vector registers printf 8 movq $hiString, %rdi #load hiString 9 call printf #printf 10 call inout #inout 11 movq $0, %rdi
14 2024-04-06
编程技术问答社区
在64位系统上组装32位二进制文件(GNU工具链)
我编写了成功编译的汇编代码: as power.s -o power.o 但是,当我尝试链接对象文件时,它会失败: ld power.o -o power 为了在64位OS上运行(Ubuntu 14.04),我在power.s文件的开头添加了.code32,但是我仍然会遇到错误: 分割故障(核心倾倒) power.s: .code32 .section .data .section .text .global _start _start: pushl $3 pushl $2 call power addl $8, %esp pushl %eax pushl $2 pushl $5 call power addl $8, %esp popl %ebx addl %eax, %ebx movl $1, %eax int $0x80 .type power, @function power: pushl %ebp movl %esp,
20 2024-04-04
编程技术问答社区
GDB跨度命令
我有以下C代码: #include #include #define SECTSIZE 512 #define ELFHDR ((struct Elf *)0x10000) // Scratch space void readsect(void*, unit32_t); void readsec(uint32_t, uint32_t, uint32_t); void bootmain(void) { struct Proghdr *ph, *eph; // Read the first page off disk readseg((uint32_t) ELFHDR, SECTSIZE*8, 0); . . // The rest of the code . } 我正在使用GDB介入我的代码并查看正在发生的事情. 我找到了bootmain 0x7d0a的地址,然后在那
16 2024-04-02
编程技术问答社区
如何将以下NASM代码转换为AT&T语法,以解决 "不能处理jmp中的非绝对段 "的错误。
我是AT&T语法的新手.我想仅仅为了理解,将以下NASM语法代码转换为AT&T语法. 我尝试将其转换为AT&T语法: lgdt (gdtpointer) jmp $gdtcode, $_start gdt: .quad 0x0000000000000000 gdtcode: .word .- gdt .quad 0x0020980000000000 gdtdata: .word .- gdt .quad 0x0000900000000000 gdtpointer: .word .-gdt-1 .quad gdt Error: can't handle non absolute segment in `jmp' nasm代码: lgdt [gdt.pointer] jmp gdt.code:startLongMode ;Global Descri
8 2024-04-02
编程技术问答社区
用GAS AT&T指令计算引导扇区的填充长度?
所以我想在启动器中添加填充.假设,那里目前只有一个无尽的循环:jmp ..该行业需要长512个字节.另外,需要在末尾添加的魔术num 0xaa55. jmp . .skip 508, 0 .word 0xaa55 在 在英特尔/nasm语法中,它是: ; print something times 510-($-$$) db 0 dw 0xaa55 但是在AT&T语法中?循环(.rept)在这里不起作用,因为.没有提供此处需要的绝对值.对于.skip/.space,我们也有同样的问题,它们也需要一个绝对值. 是否有一种使用某种循环/.align/.skip/etc? 添加填充的方法 编辑: 我使用as来构建和链接ld -Ttext 0x7c00 --oformat binary,直到yasm足够稳定,以实现AT&T语法. 解决方案 使用AT&T语法,您可以在引导加载程序的开头放置标签,然后使用类似的内容: .global _start .tex
24 2024-04-02
编程技术问答社区
智能蓝牙。GATT Vs. ATT-它们之间有什么区别?
任何人都可以为我定义Gatt和ATT之间的区别是什么?我没有理解. 我知道它们都是处理BLE服务的通用协议.但并没有真正理解它.请解释. 谢谢! 解决方案 ATT是一种基本上定义如何传输数据单位(属性)的级别机制. GATT建立在ATT之上,并定义了如何组成更高级别的服务以及在这些服务上运营的框架. 其他解决方案 您可以在此处找到蓝牙规格: 规范采用了文档 查看核心版本4.2,规范卷3-核心系统软件包[主机卷]. ATT在F部分中定义,GATT在G. 中定义 att(第2160页):"此规范定义了属性协议;在对等设备上发现,阅读和写作属性的协议." gatt(第2207页):"此规范定义了使用属性协议用于发现服务的通用属性配置文件,以发现服务以及在对等设备上读取和写作特征值." 是的,是的,Gatt使用ATT作为其传输协议来在设备之间交换数据,该规范详细描述了如何定义这些协议.大多数应用程序开发人员主要与Gatt有关,该GATT也用于定义某些BL
14 2024-04-01
编程技术问答社区
在汇编X86中把十进制转换为二进制
我试图将小数点写入二进制转换器,对于某些数字,它有效,而其他数字则没有. 0-8数字可以正常工作,但是当我输入9时显示101. SYSEXIT = 1 SYSREAD = 3 SYSWRITE = 4 STDOUT = 1 STDIN = 0 .bss .equ bufsize, 32 .lcomm buf, bufsize #buf - saved user input .equ buf2size, 32 .lcomm buf2, buf2size #binary in wrong order .equ buf3size, 32 .lcomm buf3, buf2size #binary correct or
18 2024-03-30
编程技术问答社区