README content update && fix illegal alignment size input
This commit is contained in:
parent
f0e850bf7f
commit
6c1e790cd1
@ -60,14 +60,14 @@ SrcToA2L.exe .\Test\typedef.h .\Test\source_code.c
|
|||||||
|
|
||||||
- `-r` 指定为合并写入的参考A2L文件;
|
- `-r` 指定为合并写入的参考A2L文件;
|
||||||
- `-m` 指定为用于查找地址的map文件;
|
- `-m` 指定为用于查找地址的map文件;
|
||||||
- `-a` 指定字节对齐长度(仅非0数值且为2的正整次幂),不指定或参数错误时默认为4字节对齐;
|
- `-a` 指定字节对齐长度(仅为1或2的正整次幂),不指定或参数错误时默认为4字节对齐;
|
||||||
|
|
||||||
其它传入的参数视为用于解析的源文件、头文件,A2L与map文件仅传入的最后一个有效;
|
其它传入的参数视为用于解析的源文件、头文件,A2L与map文件仅传入的最后一个有效;
|
||||||
|
|
||||||
**`SrcToA2L` 不会破坏任何用于输入的文件,仅以只读模式打开**;
|
**`SrcToA2L` 不会破坏任何用于输入的文件,仅以只读模式打开**;
|
||||||
|
|
||||||
## 注意事项
|
## 注意事项
|
||||||
本工具为了省略多余操作,除需特定处理的 `calibrations` 与 `measurements` 标记段外,结构体、宏定义、地址匹配等的解析识别是通过全文扫描提取关键字进行的,由于代码风格千奇百怪,解析处理过程有可能会遇到预料之外的BUG(尤其是在生产环境下),为避免发生此类情况发生,最好事先将用于处理的代码进行格式化,或特别留意 `define`、`typedef` 等关键字周边的情况;
|
本工具为了省略多余操作,除需特定处理的 `calibrations` 与 `measurements` 标记段外,结构体、宏定义、地址匹配等的解析识别是通过全文扫描提取关键字进行的,由于代码风格千奇百怪,解析处理过程有可能会遇到预料之外的BUG(尤其是在生产环境下),为避免发生此类情况发生,**最好事先将用于处理的代码进行格式化**,或特别留意 `define`、`typedef` 等关键字周边的情况;
|
||||||
|
|
||||||
如有意外情况发生,可以参考终端日志查看问题发生位置以修改输入文件,或对本工具源码进行修改,构建适应特定环境的版本;
|
如有意外情况发生,可以参考终端日志查看问题发生位置以修改输入文件,或对本工具源码进行修改,构建适应特定环境的版本;
|
||||||
|
|
||||||
@ -111,11 +111,10 @@ OS:Windows11 Professional 24H2 (26100.4652)
|
|||||||
Tool Chain:[mingw-w64\i686-14.2.0-release-win32-dwarf-ucrt-rt_v12-rev2](https://github.com/niXman/mingw-builds-binaries/releases/tag/14.2.0-rt_v12-rev2)
|
Tool Chain:[mingw-w64\i686-14.2.0-release-win32-dwarf-ucrt-rt_v12-rev2](https://github.com/niXman/mingw-builds-binaries/releases/tag/14.2.0-rt_v12-rev2)
|
||||||
|
|
||||||
构建关系由 `Makefile` 组织,使用 `C17`、`C++17` 标准,但由于并未使用高级特性,构建标准可自行调整(按理说 `C98`、`C++98` 应该也行);
|
构建关系由 `Makefile` 组织,使用 `C17`、`C++17` 标准,但由于并未使用高级特性,构建标准可自行调整(按理说 `C98`、`C++98` 应该也行);
|
||||||
|
|
||||||
完善构建环境后,在工作目录下使用 `make`、`mingw32-make` 即可进行构建;
|
完善构建环境后,在工作目录下使用 `make`、`mingw32-make` 即可进行构建;
|
||||||
|
|
||||||
本工具仅使用标准库,完全具备跨平台支持,但在其他平台、环境下需要对 `Makefile` 进行少量修改;
|
本工具仅使用标准库,完全具备跨平台支持,但在其他平台、环境下需要对 `Makefile` 进行少量修改;
|
||||||
|
目前已知使用64位或某些分发版本的编译器时会出现 `size_t` 类型不统一导致的编译警告,但不影响主要功能;
|
||||||
## 主要目录及说明
|
## 主要目录及说明
|
||||||
Git-Storage 本仓库目录
|
Git-Storage 本仓库目录
|
||||||
├─.vscode 用于vscode的配置文件
|
├─.vscode 用于vscode的配置文件
|
||||||
|
@ -36,7 +36,9 @@ void solve_args(int argc, char *argv[])
|
|||||||
|
|
||||||
size_t value = 0;
|
size_t value = 0;
|
||||||
sscanf(argv[count + 1], "%u", &value);
|
sscanf(argv[count + 1], "%u", &value);
|
||||||
if ((value % 2 == 0 && value != 0) || value == 1)
|
|
||||||
|
// 利用2进制中2的整次幂仅有1位为1判定是否为合法字节对齐
|
||||||
|
if ((value & (value - 1)) == 0 && value != 0)
|
||||||
{
|
{
|
||||||
log_printf(LOG_SUCCESS, "Alignment size set to %u.", value);
|
log_printf(LOG_SUCCESS, "Alignment size set to %u.", value);
|
||||||
addr_alignment_size = value;
|
addr_alignment_size = value;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user